From unknown Thu Sep 11 18:37:22 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#8856 <8856@debbugs.gnu.org> To: bug#8856 <8856@debbugs.gnu.org> Subject: Status: 24.0.50; regression: `special-display-popup-frame' broken Reply-To: bug#8856 <8856@debbugs.gnu.org> Date: Fri, 12 Sep 2025 01:37:22 +0000 retitle 8856 24.0.50; regression: `special-display-popup-frame' broken reassign 8856 emacs submitter 8856 "Drew Adams" severity 8856 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 13 15:30:58 2011 Received: (at submit) by debbugs.gnu.org; 13 Jun 2011 19:30:58 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QWCqg-0002cS-Gl for submit@debbugs.gnu.org; Mon, 13 Jun 2011 15:30:58 -0400 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QWCqd-0002cE-Ju for submit@debbugs.gnu.org; Mon, 13 Jun 2011 15:30:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QWCqW-0005wV-Ew for submit@debbugs.gnu.org; Mon, 13 Jun 2011 15:30:50 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([140.186.70.17]:44260) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QWCqW-0005wM-86 for submit@debbugs.gnu.org; Mon, 13 Jun 2011 15:30:48 -0400 Received: from eggs.gnu.org ([140.186.70.92]:34885) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QWCqU-0008J5-7s for bug-gnu-emacs@gnu.org; Mon, 13 Jun 2011 15:30:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QWCqS-0005vm-8n for bug-gnu-emacs@gnu.org; Mon, 13 Jun 2011 15:30:45 -0400 Received: from rcsinet11.oracle.com ([148.87.113.123]:18583) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QWCqR-0005vV-RG for bug-gnu-emacs@gnu.org; Mon, 13 Jun 2011 15:30:44 -0400 Received: from rtcsinet22.oracle.com (rtcsinet22.oracle.com [66.248.204.30]) by rcsinet11.oracle.com (Switch-3.4.2/Switch-3.4.2) with ESMTP id p5DJULcp005807 for ; Mon, 13 Jun 2011 19:30:42 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by rtcsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5DHhC5L025981 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Mon, 13 Jun 2011 17:43:12 GMT Received: from abhmt015.oracle.com (abhmt015.oracle.com [141.146.116.24]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5DHh6qo002108 for ; Mon, 13 Jun 2011 12:43:06 -0500 Received: from dradamslap1 (/130.35.179.10) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 13 Jun 2011 10:43:06 -0700 From: "Drew Adams" To: Subject: 24.0.50; regression: `special-display-popup-frame' broken Date: Mon, 13 Jun 2011 10:43:07 -0700 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 Thread-Index: Acwp8VsDkqrZ3j/kSUaofX4eS//5oA== X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6090 X-Source-IP: rtcsinet22.oracle.com [66.248.204.30] X-CT-RefId: str=0001.0A090204.4DF66562.00A7:SCFSTAT5015188,ss=1,fgs=0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.17 X-Spam-Score: -6.5 (------) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.5 (------) I do not have a recipe from emacs -Q. The simplest recipe I have offhand is to start with this: runemacs.exe -Q --debug-init -l "hexrgb.el" -l "oneonone.el" -f "1on1-emacs" You can download the two files mentioned from here: http://www.emacswiki.org/cgi-bin/wiki?action=index;match=%5C.(el%7Ctar)(%5C.gz)% 3F%24 And then do this: M-x f TAB ; to display *Completions* frame. C-] ; to return to top level. M-x f TAB o Or just hit TAB twice in a row: M-x f TAB TAB. IOW, try to type more input in minibuffer. This raises the error "Buffer is read-only #" This should not happen, because the code that creates my special-display frame *Completions* does this: (redirect-frame-focus (selected-frame) 1on1-minibuffer-frame) The code that does that is in function `1on1-display-*Completions*-frame', which is invoked via this entry on list `special-display-buffer-names': ("*Completions*" 1on1-display-*Completions*-frame ((background-color ...))) My guess is that `special-display-popup-frame' is the culprit, but the effect is as if `redirect-frame-focus' were no longer respected. And I see that the code of `special-display-popup-frame' has not changed recently. What seems to be happening (determined by debugging entry to `1on1-display-*Completions*-frame'), is that `1on1-display-*Completions*-frame' gets called only when the frame is created, not each time `special-display-popup-frame' is called. So if *Completions* is already displayed `1on1-display-*Completions*-frame' is not invoked for its display, and the call to `redirect-frame-focus' is not effected. `C-h f special-display-popup-frame' says that it is obsolete as of 24.1, but this just now stopped working. And the doc, AFAICT, says nothing about how to do what users have always done using `special-display-buffer-names'. That uses `special-display-popup-frame', which is still the default value of `special-display-function'. This seems to be horribly broken now. I see other problems that might (or might not) be related: breakage of dedicated frames (no longer dedicated), so that, for instance, other buffers get put into my dedicated *Completions* frame. We seem to be in a halfway position now, between two horses (or two chairs, depending on your culture). The default value of `special-display-function' is a function that is declared obsolete! And things that have always worked no longer work at all. It's not clear, if users are being required to adjust their code, what adjustments are needed. Some guidance needs to be provided, in addition to fixing any related bugs. I cannot use Emacs for the moment, starting with this build. I must use an older build until this problem (and perhaps related problems) can be fixed. In GNU Emacs 24.0.50.1 (i386-mingw-nt5.1.2600) of 2011-06-13 on 3249CTO Windowing system distributor `Microsoft Corp.', version 5.1.2600 configured using `configure --with-gcc (4.5) --no-opt --cflags -Ic:/build/include' From debbugs-submit-bounces@debbugs.gnu.org Tue Jun 14 05:16:00 2011 Received: (at 8856) by debbugs.gnu.org; 14 Jun 2011 09:16:00 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QWPj6-0004zn-8S for submit@debbugs.gnu.org; Tue, 14 Jun 2011 05:16:00 -0400 Received: from mailout-de.gmx.net ([213.165.64.22]) by debbugs.gnu.org with smtp (Exim 4.69) (envelope-from ) id 1QWPj3-0004zb-Mo for 8856@debbugs.gnu.org; Tue, 14 Jun 2011 05:15:58 -0400 Received: (qmail invoked by alias); 14 Jun 2011 09:15:51 -0000 Received: from 62-47-57-173.adsl.highway.telekom.at (EHLO [62.47.57.173]) [62.47.57.173] by mail.gmx.net (mp012) with SMTP; 14 Jun 2011 11:15:51 +0200 X-Authenticated: #14592706 X-Provags-ID: V01U2FsdGVkX19n8m1PkrZntlaSWZK4cuFHAgA3f6kotXsxGfkuIv TQXaEe18UqZEN5 Message-ID: <4DF726C6.6010106@gmx.at> Date: Tue, 14 Jun 2011 11:15:50 +0200 From: martin rudalics User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) MIME-Version: 1.0 To: Drew Adams Subject: Re: bug#8856: 24.0.50; regression: `special-display-popup-frame' broken References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 X-Spam-Score: -2.5 (--) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -2.5 (--) > My guess is that `special-display-popup-frame' is the culprit, but the > effect is as if `redirect-frame-focus' were no longer respected. And I > see that the code of `special-display-popup-frame' has not changed > recently. > > What seems to be happening (determined by debugging entry to > `1on1-display-*Completions*-frame'), is that > `1on1-display-*Completions*-frame' gets called only when the frame is > created, not each time `special-display-popup-frame' is called. So if > *Completions* is already displayed `1on1-display-*Completions*-frame' is > not invoked for its display, and the call to `redirect-frame-focus' is > not effected. Could you please try stepping through `special-display-popup-frame' with an old version that works for you and the latest one to find out whether the function that does `redirect-frame-focus' gets called and, if not, why it gets called in the former and why not in the latter? martin From debbugs-submit-bounces@debbugs.gnu.org Fri Jun 17 11:51:40 2011 Received: (at 8856) by debbugs.gnu.org; 17 Jun 2011 15:51:40 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QXbKe-0000uT-49 for submit@debbugs.gnu.org; Fri, 17 Jun 2011 11:51:40 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QXbKZ-0000u0-83; Fri, 17 Jun 2011 11:51:36 -0400 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by rcsinet10.oracle.com (Switch-3.4.2/Switch-3.4.2) with ESMTP id p5HFpQL0009626 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 17 Jun 2011 15:51:29 GMT Received: from acsmt356.oracle.com (acsmt356.oracle.com [141.146.40.156]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5HFpQVt001997 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 17 Jun 2011 15:51:26 GMT Received: from abhmt104.oracle.com (abhmt104.oracle.com [141.146.116.56]) by acsmt356.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5HFpKjO008428; Fri, 17 Jun 2011 10:51:21 -0500 Received: from dradamslap1 (/71.202.147.44) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Fri, 17 Jun 2011 08:51:20 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com> <4DF65024.20305@gmx.at> <0C191F638279437BADFCC697A5389F9E@us.oracle.com> <4DF726A1.7020804@gmx.at> <8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com> <4DFB6BBF.3080504@gmx.at> Subject: RE: bug#8851: 24.0.50; regression: special-display-frame is no longer dedicated Date: Fri, 17 Jun 2011 08:51:18 -0700 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <4DFB6BBF.3080504@gmx.at> Thread-Index: Acws/yZv6ufmg3EfSrWnH23QPRg7rgAAmMig X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090204.4DFB7801.0072:SCFMA922111,ss=1,fgs=0 X-Spam-Score: -6.5 (------) X-Debbugs-Envelope-To: 8856 Cc: 8851@debbugs.gnu.org, 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.5 (------) > From: martin rudalics (private mail) > I've checked in a fix that should address this issue. I > attached a copy of the latest window.el. Please report on the > list whether it works. Thanks for working on this. But I'm sorry to say that no, it not only does not help, it makes things worse. Now, when I hit `C-x C-b' I get `*Buffer List*' in the same (regular) frame - it just replaces the current buffer in its window. What should happen is that `*Buffer List*' gets popped up in its own, special-display frame (separate frame, different frame properties from regular frames). Here is a recipe (you just need to download the same 2 files as for the recipe for bug #8856). In fact, my reply to you with the debugger info, in this #8851 thread, involves this same startup recipe. Let me repeat the startup recipe, which holds for both of these bugs (different symptoms), #8851 and #8856: runemacs.exe -Q --debug-init -l "hexrgb.el" -l "oneonone.el" -f "1on1-emacs" Download the two files mentioned from here: http://www.emacswiki.org/cgi-bin/wiki?action=index;match=%5C.(el%7Ctar)(%5C.gz)% 3F%24 For the rest of the bug #8851 recipe, see the initial bug report. ---- Wrt bug #8856 also, the same symptoms reported initially are still there (frame selection/focus problem). Plus, now the special-display frame that I define for `*Completions*' is not even used. Instead, buffer/window `*Completions*' is shown in a regular frame. Please try the recipe for #8856, starting with the same Emacs startup recipe shown above, and I think you will see the same things I see. IOW, you should be able to reproduce both problems from runemacs -Q. Here again is that recipe (after startup as shown above): > M-x f TAB ; to display *Completions* frame. > C-] ; to return to top level. > > M-x f TAB o > > Or just hit TAB twice in a row: M-x f TAB TAB. > > IOW, try to type more input in minibuffer. This raises the error > "Buffer is read-only #" ---- If you cannot reproduce these two problems then maybe there is an MS-Windows-specific issue somewhere. But I'm guessing that you will be able to reproduce them from the runemacs -Q startup shown here. Let me know if something is not clear. From debbugs-submit-bounces@debbugs.gnu.org Fri Jun 17 12:22:43 2011 Received: (at 8856) by debbugs.gnu.org; 17 Jun 2011 16:22:43 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QXbog-0003A8-MM for submit@debbugs.gnu.org; Fri, 17 Jun 2011 12:22:42 -0400 Received: from mailout-de.gmx.net ([213.165.64.23]) by debbugs.gnu.org with smtp (Exim 4.69) (envelope-from ) id 1QXboc-00039j-3j for 8856@debbugs.gnu.org; Fri, 17 Jun 2011 12:22:41 -0400 Received: (qmail invoked by alias); 17 Jun 2011 16:22:30 -0000 Received: from 62-47-46-99.adsl.highway.telekom.at (EHLO [62.47.46.99]) [62.47.46.99] by mail.gmx.net (mp015) with SMTP; 17 Jun 2011 18:22:30 +0200 X-Authenticated: #14592706 X-Provags-ID: V01U2FsdGVkX196fAMwXYx6oHVFiisgA4l8507eFA+d9O5Quorm02 8DVpQ3VE8Qj0vt Message-ID: <4DFB7F3F.7080702@gmx.at> Date: Fri, 17 Jun 2011 18:22:23 +0200 From: martin rudalics User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) MIME-Version: 1.0 To: Drew Adams Subject: Re: bug#8851: 24.0.50; regression: special-display-frame is no longer dedicated References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com> <4DF65024.20305@gmx.at> <0C191F638279437BADFCC697A5389F9E@us.oracle.com> <4DF726A1.7020804@gmx.at> <8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com> <4DFB6BBF.3080504@gmx.at> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 X-Spam-Score: -2.5 (--) X-Debbugs-Envelope-To: 8856 Cc: 8851@debbugs.gnu.org, 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -2.5 (--) > Now, when I hit `C-x C-b' I get `*Buffer List*' in the same (regular) frame - it > just replaces the current buffer in its window. > > What should happen is that `*Buffer List*' gets popped up in its own, > special-display frame (separate frame, different frame properties from regular > frames). So you somewhere have settings for this buffer in `special-display-buffer-names' or `special-display-regexps'. Why can't you send me them? > Here is a recipe (you just need to download the same 2 files as for the recipe > for bug #8856). In fact, my reply to you with the debugger info, in this #8851 > thread, involves this same startup recipe. I need a simple recipe from emacs -Q. If you use an outside function in any of these please use a dummy function I can run on both Emacs 23 and Emacs 24 to see the differences. If it's already difficult for you to go through the debugger with your functions why do you think I can do any better? What I need are your settings wrt special-display-... and the buffer in question. Why can't you post these? > Wrt bug #8856 also, the same symptoms reported initially are still there (frame > selection/focus problem). > > Plus, now the special-display frame that I define for `*Completions*' is not > even used. Instead, buffer/window `*Completions*' is shown in a regular frame. Probably because `pop-up-frames' is t on your system so `pop-up-frame-alist' prevails. Again, what are the special-display-... related values for *Completions*? martin From debbugs-submit-bounces@debbugs.gnu.org Fri Jun 17 13:49:12 2011 Received: (at 8856) by debbugs.gnu.org; 17 Jun 2011 17:49:13 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QXdAO-0001Fx-Dd for submit@debbugs.gnu.org; Fri, 17 Jun 2011 13:49:12 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QXdAJ-0001FP-O9 for 8856@debbugs.gnu.org; Fri, 17 Jun 2011 13:49:10 -0400 Received: from rtcsinet22.oracle.com (rtcsinet22.oracle.com [66.248.204.30]) by rcsinet10.oracle.com (Switch-3.4.2/Switch-3.4.2) with ESMTP id p5HHmxZa016593 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 17 Jun 2011 17:49:01 GMT Received: from acsmt358.oracle.com (acsmt358.oracle.com [141.146.40.158]) by rtcsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5HHmwDf026695 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 17 Jun 2011 17:48:59 GMT Received: from abhmt105.oracle.com (abhmt105.oracle.com [141.146.116.57]) by acsmt358.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5HHmqnQ017444; Fri, 17 Jun 2011 12:48:53 -0500 Received: from dradamslap1 (/71.202.147.44) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Fri, 17 Jun 2011 10:48:52 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at> Subject: RE: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated Date: Fri, 17 Jun 2011 10:48:50 -0700 Message-ID: <6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: Thread-Index: Acws/yZv6ufmg3EfSrWnH23QPRg7rgAAmMigAASNx1A= X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: rtcsinet22.oracle.com [66.248.204.30] X-CT-RefId: str=0001.0A090209.4DFB938E.0020:SCFSTAT5015188,ss=1,fgs=0 X-Spam-Score: -6.5 (------) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.5 (------) > > Wrt bug #8856 also, the same symptoms reported initially > > are still there (frame selection/focus problem). > > > > Plus, now the special-display frame that I define for > > `*Completions*' is not even used. Instead, buffer/window > > `*Completions*' i shown in a regular frame. > > Probably because `pop-up-frames' is t on your system so > `pop-up-frame-alist' prevails. Again, what are the > special-display-... related values for *Completions*? `pop-up-frames' is t, from oneonone.el. I do not define `pop-up-frame-alist'. I gave you the value of `special-display-regexps'. Here it is again: ("[ ]?[*][^*]+[*]")) > > Here again is that recipe (after startup as shown above): > > > M-x f TAB ; to display *Completions* frame. > > > C-] ; to return to top level. > > > M-x f TAB o > > > Or just hit TAB twice in a row: M-x f TAB TAB. > > > IOW, try to type more input in minibuffer. This raises the error > > > "Buffer is read-only #" The recipe, one more time: runemacs.exe -Q --debug-init -l "hexrgb.el" -l "oneonone.el" -f "1on1-emacs" Download the two files mentioned from here: http://www.emacswiki.org/cgi-bin/wiki?action=index;match=%5C.(el%7Ctar)(%5C.gz)% 3F%24 1. Load your new window.el that you just sent me (but see below). 2. (setq special-display-regexps '("[ ]?[*][^*]+[*]")) So far, the recipe is the same for bug #8851 and #8856. Now it changes. 3. Do this: M-x f TAB ; to display *Completions* frame. C-] ; to return to top level. M-x f TAB o Or just hit TAB twice in a row: M-x f TAB TAB. IOW, try to type more input in minibuffer. The bug reported for #8856 is that this then raises the error "Buffer is read-only #" However, as I said, with the window.el version you just sent me there is now an additional bug - presumably the same additional bug mentioned in #8851 (wrt buffer `*Buffer List*'): `*Completions*' is no longer shown in a special-display frame at all. It is now shown in the same window of the original buffer (`*scratch*' presumably, by default from emacs -Q). Can you reproduce the problems? Try first without step #1, to see the bug I reported. Try with step #1 to see that your fix just adds another problem. The first step is to reproduce the problem. Then we can try to debug it. From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 19 09:26:35 2011 Received: (at 8856) by debbugs.gnu.org; 19 Jun 2011 13:26:35 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYI1K-00067b-91 for submit@debbugs.gnu.org; Sun, 19 Jun 2011 09:26:34 -0400 Received: from mailout-de.gmx.net ([213.165.64.22]) by debbugs.gnu.org with smtp (Exim 4.69) (envelope-from ) id 1QYI1H-00067J-1N for 8856@debbugs.gnu.org; Sun, 19 Jun 2011 09:26:33 -0400 Received: (qmail invoked by alias); 19 Jun 2011 13:26:24 -0000 Received: from 62-47-36-26.adsl.highway.telekom.at (EHLO [62.47.36.26]) [62.47.36.26] by mail.gmx.net (mp022) with SMTP; 19 Jun 2011 15:26:24 +0200 X-Authenticated: #14592706 X-Provags-ID: V01U2FsdGVkX19xRxtQ3zRx47toFLGKTmxI3cgI85/Fzem4eHURB6 wKY2c6SX37Tpmb Message-ID: <4DFDF8FD.3010502@gmx.at> Date: Sun, 19 Jun 2011 15:26:21 +0200 From: martin rudalics User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) MIME-Version: 1.0 To: Drew Adams Subject: Re: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at> <6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com> In-Reply-To: <6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 X-Spam-Score: -2.5 (--) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -2.5 (--) > The recipe, one more time: > > runemacs.exe -Q --debug-init -l "hexrgb.el" -l "oneonone.el" -f "1on1-emacs" > > Download the two files mentioned from here: > http://www.emacswiki.org/cgi-bin/wiki?action=index;match=%5C.(el%7Ctar)(%5C.gz)% > 3F%24 I'm not going to do that. If you can provide me a self-contained test that doesn't require to download any files I shall follow your advices. But I have done the check below. When I add the name of a buffer *text* to `special-display-buffer-names' I have three choices - a plain string, an alist of parameter value pairs, or a function with arguments. These give the three cases below when evaluating (display-buffer (get-buffer-create "*text*")): (1) special-display-buffer-names --> ("*text*") calls `special-display-popup-frame' with the argument nil (2) special-display-buffer-names --> (("*text*" (x . 3) (y . 4))) calls `special-display-popup-frame' with the argument ((x . 3) (y . 4)) (3) special-display-buffer-names --> (("*text*" ignore (3 4))) calls `special-display-popup-frame' with the argument (ignore (3 4)) All three cases give the same results here for `display-buffer' before and after my changes. If you see the same values, the handling of special buffers is not affected by the changes. If you see a different behavior, please tell me what you see. martin From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 19 10:31:48 2011 Received: (at 8856) by debbugs.gnu.org; 19 Jun 2011 14:31:48 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYJ2R-0003Lu-1D for submit@debbugs.gnu.org; Sun, 19 Jun 2011 10:31:47 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYJ2O-0003Ld-6U for 8856@debbugs.gnu.org; Sun, 19 Jun 2011 10:31:45 -0400 Received: from rtcsinet21.oracle.com (rtcsinet21.oracle.com [66.248.204.29]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5JEVZRm017340 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 19 Jun 2011 14:31:37 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by rtcsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5JEVX1B011690 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 19 Jun 2011 14:31:34 GMT Received: from abhmt003.oracle.com (abhmt003.oracle.com [141.146.116.12]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5JEVS54025385; Sun, 19 Jun 2011 09:31:28 -0500 Received: from dradamslap1 (/10.159.51.106) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 19 Jun 2011 07:31:25 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at> <6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com> <4DFDF8FD.3010502@gmx.at> Subject: RE: bug#8856: 24.0.50;regression: `special-display-frame' broken Date: Sun, 19 Jun 2011 07:31:23 -0700 Message-ID: <454481494EC843E0853B54DC014C08C0@us.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0010_01CC2E52.E5002650" X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <4DFDF8FD.3010502@gmx.at> Thread-Index: AcwuhIF+VMX8S6feTFOHwbft//7D5QABozMw X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: rtcsinet21.oracle.com [66.248.204.29] X-CT-RefId: str=0001.0A090206.4DFE0849.0179:SCFSTAT5015188, ss=1, re=-19.000, fgs=0 X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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 This is a multi-part message in MIME format. ------=_NextPart_000_0010_01CC2E52.E5002650 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit > > The recipe, one more time: > > > > runemacs.exe -Q --debug-init -l "hexrgb.el" -l > > "oneonone.el" -f "1on1-emacs" > > > > Download the two files mentioned from here: > > > > http://www.emacswiki.org/cgi-bin/wiki?action=index;match=%5C.(el%7Ctar)(%5C.gz)% 3F%24 > > I'm not going to do that. If you can provide me a self-contained test > that doesn't require to download any files I shall follow > your advices. I see. You introduce a regression but won't click a link. OK, in that case see attached. These are the same two files for the recipes of the other regressions reported. They are not large, and they are all you need - the recipe is a self-contained test. > But I have done the check below. > > When I add the name of a buffer *text* > to `special-display-buffer-names' Please follow the recipe. As you know, buffer *Completions* is not just any buffer - it is not *text*. It is closely connected with the minibuffer. And in this case the minibuffer is in a standalone frame. And frame focus for the *Completions* frame is redirected to the minibuffer frame. I have explained all of that, and it is all in the recipe code that you can test. > I have three choices - a plain string, an alist of parameter value > pairs, or a function with arguments. These give the three cases below > when evaluating (display-buffer (get-buffer-create "*text*")): Why invent? I gave you exactly which of the three choices is used. If you simply look at the code or load it and use `C-h v special-display-buffer-names' you'll see it: Value: (("*Completions*" 1on1-display-*Completions*-frame ((background-color . "LavenderBlush2") (mouse-color . "VioletRed") (cursor-color . "VioletRed") (menu-bar-lines . 0) (tool-bar-lines . 0) (width . 100))) ("*Help*" 1on1-display-*Help*-frame ((background-color . "Thistle") (mouse-color . "Blue Violet") (cursor-color . "Blue Violet") (height . 40)))) > (3) special-display-buffer-names --> (("*text*" ignore (3 4))) > calls `special-display-popup-frame' with the argument > > (ignore (3 4)) > > All three cases give the same results here for `display-buffer' before > and after my changes. If you see the same values, the handling of > special buffers is not affected by the changes. If you see a > different behavior, please tell me what you see. See above. *Completions* is not *text*. *Completions* is tied to the minibuffer. The minibuffer is in a standalone frame. The *Completions* frame focus is redirected to the minibuffer frame. Please try the simple (3-4 lines) recipe, using the attached code. That's the first step: reproduce the problem. Then we can try to dig down to its kernel and find a solution. You haven't even taken the 1-2 minutes needed to see if you can reproduce it on your system. ------=_NextPart_000_0010_01CC2E52.E5002650 Content-Type: application/octet-stream; name="hexrgb.el" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="hexrgb.el" ;;; hexrgb.el --- Functions to manipulate colors, including RGB hex = strings.=0A= ;;=0A= ;; Filename: hexrgb.el=0A= ;; Description: Functions to manipulate colors, including RGB hex = strings.=0A= ;; Author: Drew Adams=0A= ;; Maintainer: Drew Adams=0A= ;; Copyright (C) 2004-2011, Drew Adams, all rights reserved.=0A= ;; Created: Mon Sep 20 22:58:45 2004=0A= ;; Version: 21.0=0A= ;; Last-Updated: Sun May 22 13:36:17 2011 (-0700)=0A= ;; By: dradams=0A= ;; Update #: 784=0A= ;; URL: http://www.emacswiki.org/cgi-bin/wiki/hexrgb.el=0A= ;; Keywords: number, hex, rgb, color, background, frames, display=0A= ;; Compatibility: GNU Emacs: 20.x, 21.x, 22.x, 23.x=0A= ;;=0A= ;; Features that might be required by this library:=0A= ;;=0A= ;; None=0A= ;;=0A= ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=0A= ;;=0A= ;;; Commentary:=0A= ;;=0A= ;; Functions to manipulate colors, including RGB hex strings.=0A= ;;=0A= ;; This library provides functions for converting between RGB (red,=0A= ;; green, blue) color components and HSV (hue, saturation, value)=0A= ;; color components. It helps you convert among Emacs color=0A= ;; components (whole numbers from 0 through 65535), RGB and HSV=0A= ;; floating-point components (0.0 through 1.0), Emacs color-name=0A= ;; strings (such as "blue"), and hex RGB color strings (such as=0A= ;; "#FC43A7912").=0A= ;;=0A= ;; An RGB hex string, such as used as a frame `background-color'=0A= ;; property, is a string of 1 + (3 * n) characters, the first of=0A= ;; which is "#". The other characters are hexadecimal digits, in=0A= ;; three groups representing (from the left): red, green, and blue=0A= ;; hex codes.=0A= ;;=0A= ;; Constants defined here:=0A= ;;=0A= ;; `hexrgb-defined-colors', `hexrgb-defined-colors-alist',=0A= ;; `hexrgb-defined-colors-no-dups',=0A= ;; `hexrgb-defined-colors-no-dups-alist'.=0A= ;;=0A= ;; Options defined here:=0A= ;;=0A= ;; `hexrgb-canonicalize-defined-colors-flag'.=0A= ;;=0A= ;; Commands defined here:=0A= ;;=0A= ;; `hexrgb-blue', `hexrgb-complement', `hexrgb-green',=0A= ;; `hexrgb-hue', `hexrgb-read-color', `hexrgb-red',=0A= ;; `hexrgb-saturation', `hexrgb-value'.=0A= ;;=0A= ;; Non-interactive functions defined here:=0A= ;;=0A= ;; `hexrgb-approx-equal', `hexrgb-canonicalize-defined-colors',=0A= ;; `hexrgb-color-name-to-hex', `hexrgb-color-values-to-hex',=0A= ;; `hexrgb-color-value-to-float', `hexrgb-defined-colors',=0A= ;; `hexrgb-defined-colors-alist',=0A= ;; `hexrgb-delete-whitespace-from-string',=0A= ;; `hexrgb-float-to-color-value', `hexrgb-hex-char-to-integer',=0A= ;; `hexrgb-hex-to-color-values', `hexrgb-hex-to-hsv',=0A= ;; `hexrgb-hex-to-rgb', `hexrgb-hsv-to-hex', `hexrgb-hex-to-int',=0A= ;; `hexrgb-hsv-to-rgb', `hexrgb-increment-blue',=0A= ;; `hexrgb-increment-equal-rgb', `hexrgb-increment-green',=0A= ;; `hexrgb-increment-hex', `hexrgb-increment-red',=0A= ;; `hexrgb-int-to-hex', `hexrgb-rgb-hex-string-p',=0A= ;; `hexrgb-rgb-to-hex', `hexrgb-rgb-to-hsv'.=0A= ;;=0A= ;;=0A= ;; Add this to your initialization file (~/.emacs or ~/_emacs):=0A= ;;=0A= ;; (require 'hexrgb)=0A= ;;=0A= ;; Do not try to use this library without a window manager.=0A= ;; That is, do not use this with `emacs -nw'.=0A= ;;=0A= ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=0A= ;;=0A= ;;; Change log:=0A= ;;=0A= ;; 2011/02/16 dadams=0A= ;; hexrgb-increment-hex: INCOMPATIBLE CHANGE:=0A= ;; Swapped order of args NB-DIGITS, INCREMENT, = to fit other functions.=0A= ;; hexrgb-increment-*: Took the change to hexrgb-increment-hex into = account.=0A= ;; Improved various doc strings.=0A= ;; 2011/01/08 dadams=0A= ;; Restored autoload cookie for eval-and-compile = hexrgb-canonicalize-defined-colors.=0A= ;; 2011/01/03 dadams=0A= ;; Removed autoload cookies from non-interactive functions.=0A= ;; 2010/12/18 dadams=0A= ;; hexrgb-canonicalize-defined-colors: Added autoload cookie. Thx = to Richard Kim.=0A= ;; 2010/12/06 dadams=0A= ;; hexrgb-hex-to-color-values: Correct start offset for blue. Thx = to "Linda" on Emacs Wiki.=0A= ;; 2009/11/14 dadams=0A= ;; hexrgb-rgb-to-hsv: Corrected hue when > 1.0. Use strict = inequality for hue limit tests.=0A= ;; hexrgb-approx-equal: Convert RFUZZ and AFUZZ to their absolute = values.=0A= ;; 2009/11/03 dadams=0A= ;; Added: hexrgb-delete-whitespace-from-string, = hexrgb-canonicalize-defined-colors,=0A= ;; hexrgb-defined-colors(-no-dups)(-alist), = hexrgb-canonicalize-defined-colors-flag.=0A= ;; hexrgb-read-color: Use function hexrgb-defined-colors-alist, not = the constant.=0A= ;; 2008/12/25 dadams=0A= ;; hexrgb-rgb-to-hsv:=0A= ;; Replace (not (equal 0.0e+NaN saturation)) by standard test (=3D = saturation saturation).=0A= ;; Thx to Michael Heerdegen for the bug report.=0A= ;; 2008-10-17 dadams=0A= ;; hexrgb-defined-colors(-alist): Prevent load-time error if user = tries to use emacs -nw.=0A= ;; 2007/12/30 dadams=0A= ;; Added: hexrgb-hex-to-color-values.=0A= ;; 2007/10/20 dadams=0A= ;; hexrgb-read-color: Treat pseudo colors too (e.g. *point = foreground*).=0A= ;; 2007/01/21 dadams=0A= ;; hexrgb-read-color: Error if empty string (and not = allow-empty-name-p).=0A= ;; 2006/06/06 dadams=0A= ;; Added: hexrgb-defined-colors(-alist). Use instead of = (x-defined-colors).=0A= ;; hexrgb-(red|green|blue): Added interactive specs.=0A= ;; 2006/06/04 dadams=0A= ;; hexrgb-read-color: Added optional arg allow-empty-name-p.=0A= ;; 2006/06/02 dadams=0A= ;; Added: hexrgb-rgb-hex-string-p. Used it.=0A= ;; 2006/05/30 dadams=0A= ;; Added: hexrgb-hex-to-(hsv|rgb), hexrgb-hsv-to-hex, = hexrgb-color-name-to-hex,=0A= ;; hexrgb-complement, hexrgb-read-color, hexrgb-hue, = hexrgb-saturation,=0A= ;; hexrgb-value, hexrgb-red, hexrgb-blue, hexrgb-green.=0A= ;; approx-equal: Add optional fuzz factor arguments. Changed the = algorithm.=0A= ;; Renamed: approx-equal to hexrgb-approx-equal.=0A= ;; hexrgb-rgb-to-hsv: Changed test from < to <=3D: (when (<=3D hue = 0.0)...).=0A= ;; hexrgb-hsv-to-rgb: Treat hue =3D 0.0 (int 0) the same as hue =3D = 1.0 (int 6).=0A= ;; hexrgb-rgb-to-hex, hexrgb-increment-hex: Corrected doc strings.=0A= ;; 2006/05/22 dadams=0A= ;; Added: hexrgb-hsv-to-hex, hexrgb-rgb-to-hex. Require cl.el when = byte-compile.=0A= ;; 2005/08/09 dadams=0A= ;; hexrgb-rgb-to-hsv: Side-stepped Emacs-20 bug in comparing NaN.=0A= ;; hexrgb-increment-*: Added optional arg wrap-p.=0A= ;; hexrgb-increment-hex: Prevent wrap if not wrap-p.=0A= ;; 2005/08/02 dadams=0A= ;; hexrgb-rgb-to-hes: Bug fix: If delta is zero, then so are hue and = saturation.=0A= ;; 2005/06/24 dadams=0A= ;; hexrgb-rgb-to-hsv: Bug fix: test for NaN (e.g. on divide by zero).=0A= ;; 2005/02/08 dadams=0A= ;; hexrgb-hsv-to-rgb: Bug fix (typo: p, q -> pp, qq; added ww).=0A= ;; 2005/01/09 dadams=0A= ;; hexrgb-int-to-hex: Fixed bug in hexrgb-int-to-hex: nb-digits not = respected.=0A= ;; Added: hexrgb-hsv-to-rgb, hexrgb-rgb-to-hsv, approx-equal.=0A= ;; Renamed old hexrgb-increment-value to hexrgb-increment-equal-rgb.=0A= ;; 2005/01/05 dadams=0A= ;; hexrgb-int-to-hex: Used a suggestion from Juri Linkov.=0A= ;;=0A= ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=0A= ;;=0A= ;; This program is free software; you can redistribute it and/or modify=0A= ;; it under the terms of the GNU General Public License as published by=0A= ;; the Free Software Foundation; either version 2, or (at your option)=0A= ;; any later version.=0A= =0A= ;; This program is distributed in the hope that it will be useful,=0A= ;; but WITHOUT ANY WARRANTY; without even the implied warranty of=0A= ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the=0A= ;; GNU General Public License for more details.=0A= =0A= ;; You should have received a copy of the GNU General Public License=0A= ;; along with this program; see the file COPYING. If not, write to=0A= ;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth=0A= ;; Floor, Boston, MA 02110-1301, USA.=0A= ;;=0A= ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=0A= ;;=0A= ;;; Code:=0A= =0A= (eval-when-compile (require 'cl)) ;; case=0A= =0A= ;; Unless you first load `hexrgb.el', then either `palette.el' or = `eyedropper.el', you will get=0A= ;; warnings about variables and functions with prefix `eyedrop-' when = you byte-compile=0A= ;; `hexrgb.el'. You can ignore these warnings.=0A= =0A= (defvar eyedrop-picked-foreground)=0A= (defvar eyedrop-picked-background)=0A= =0A= ;;;;;;;;;;;;;;;;;;;;;;;;;;;=0A= =0A= ;;;###autoload=0A= (eval-and-compile=0A= (defun hexrgb-canonicalize-defined-colors (list)=0A= "Copy of LIST with color names canonicalized.=0A= LIST is a list of color names (strings).=0A= Canonical names are lowercase, with no whitespace.=0A= There are no duplicate names."=0A= (let ((tail list)=0A= this new)=0A= (while tail=0A= (setq this (car tail)=0A= this (hexrgb-delete-whitespace-from-string (downcase this) = 0 (length this)))=0A= (unless (member this new) (push this new))=0A= (pop tail))=0A= (nreverse new)))=0A= =0A= (defun hexrgb-delete-whitespace-from-string (string &optional from to)=0A= "Remove whitespace from substring of STRING from FROM to TO.=0A= If FROM is nil, then start at the beginning of STRING (FROM =3D 0).=0A= If TO is nil, then end at the end of STRING (TO =3D length of STRING).=0A= FROM and TO are zero-based indexes into STRING.=0A= Character FROM is affected (possibly deleted). Character TO is not."=0A= (setq from (or from 0)=0A= to (or to (length string)))=0A= (with-temp-buffer=0A= (insert string)=0A= (goto-char (+ from (point-min)))=0A= (let ((count from)=0A= char)=0A= (while (and (not (eobp)) (< count to))=0A= (setq char (char-after))=0A= (if (memq char '(?\ ?\t ?\n)) (delete-char 1) (forward-char = 1))=0A= (setq count (1+ count)))=0A= (buffer-string)))))=0A= =0A= ;;;###autoload=0A= (defconst hexrgb-defined-colors (eval-when-compile (and window-system = (x-defined-colors)))=0A= "List of all supported colors.")=0A= =0A= ;;;###autoload=0A= (defconst hexrgb-defined-colors-no-dups=0A= (eval-when-compile=0A= (and window-system (hexrgb-canonicalize-defined-colors = (x-defined-colors))))=0A= "List of all supported color names, with no duplicates.=0A= Names are all lowercase, without any spaces.")=0A= =0A= ;;;###autoload=0A= (defconst hexrgb-defined-colors-alist=0A= (eval-when-compile (and window-system (mapcar #'list = (x-defined-colors))))=0A= "Alist of all supported color names, for use in completion.=0A= See also `hexrgb-defined-colors-no-dups-alist', which is the same=0A= thing, but without any duplicates, such as \"light blue\" and=0A= \"LightBlue\".")=0A= =0A= ;;;###autoload=0A= (defconst hexrgb-defined-colors-no-dups-alist=0A= (eval-when-compile=0A= (and window-system=0A= (mapcar #'list (hexrgb-canonicalize-defined-colors = (x-defined-colors)))))=0A= "Alist of all supported color names, with no duplicates, for = completion.=0A= Names are all lowercase, without any spaces.")=0A= =0A= ;;;###autoload=0A= (defcustom hexrgb-canonicalize-defined-colors-flag t=0A= "*Non-nil means remove duplicate color names.=0A= Names are considered duplicates if they are the same when abstracting=0A= from whitespace and letter case."=0A= :type 'boolean=0A= :group 'Icicles :group 'doremi-frame-commands :group 'faces :group = 'convenience)=0A= =0A= ;; You should use these two functions, not the constants, so users can = change=0A= ;; the behavior by customizing `hexrgb-canonicalize-defined-colors-flag'.=0A= =0A= (defun hexrgb-defined-colors ()=0A= "List of supported color names.=0A= If `hexrgb-canonicalize-defined-colors-flag' is non-nil, then names=0A= are lowercased, whitespace is removed, and there are no duplicates."=0A= (if hexrgb-canonicalize-defined-colors-flag=0A= hexrgb-defined-colors-no-dups=0A= hexrgb-defined-colors))=0A= =0A= (defun hexrgb-defined-colors-alist ()=0A= "Alist of supported color names. Usable for completion.=0A= If `hexrgb-canonicalize-defined-colors-flag' is non-nil, then names=0A= are lowercased, whitespace is removed, and there are no duplicates."=0A= (if hexrgb-canonicalize-defined-colors-flag=0A= hexrgb-defined-colors-no-dups-alist=0A= hexrgb-defined-colors-alist))=0A= =0A= ;; RMS added this function to Emacs (23) as `read-color', with some = feature loss.=0A= ;;;###autoload=0A= (defun hexrgb-read-color (&optional convert-to-RGB-p allow-empty-name-p = prompt)=0A= "Read a color name or RGB hex value: #RRRRGGGGBBBB.=0A= Completion is available for color names, but not for RGB hex strings.=0A= If you input an RGB hex string, it must have the form #XXXXXXXXXXXX or=0A= XXXXXXXXXXXX, where each X is a hex digit. The number of Xs must be a=0A= multiple of 3, with the same number of Xs for each of red, green, and=0A= blue. The order is red, green, blue.=0A= =0A= Color names that are normally considered equivalent are canonicalized:=0A= They are lowercased, whitespace is removed, and duplicates are=0A= eliminated. E.g. \"LightBlue\" and \"light blue\" are both replaced=0A= by \"lightblue\". If you do not want this behavior, but want to=0A= choose names that might contain whitespace or uppercase letters, then=0A= customize option `hexrgb-canonicalize-defined-colors-flag' to nil.=0A= =0A= In addition to standard color names and RGB hex values, the following=0A= are available as color candidates. In each case, the corresponding=0A= color is used.=0A= =0A= * `*copied foreground*' - last copied foreground, if available=0A= * `*copied background*' - last copied background, if available=0A= * `*mouse-2 foreground*' - foreground where you click `mouse-2'=0A= * `*mouse-2 background*' - background where you click `mouse-2'=0A= * `*point foreground*' - foreground under the cursor=0A= * `*point background*' - background under the cursor=0A= =0A= \(You can copy a color using eyedropper commands such as=0A= `eyedrop-pick-foreground-at-mouse'.)=0A= =0A= Checks input to be sure it represents a valid color. If not, raises=0A= an error (but see exception for empty input with non-nil=0A= ALLOW-EMPTY-NAME-P).=0A= =0A= Interactively, or with optional arg CONVERT-TO-RGB-P non-nil, converts=0A= an input color name to an RGB hex string. Returns the RGB hex string.=0A= =0A= Optional arg ALLOW-EMPTY-NAME-P controls what happens if you enter an=0A= empty color name (that is, you just hit `RET'). If non-nil, then=0A= `hexrgb-read-color' returns an empty color name, \"\". If nil, then=0A= it raises an error. Programs must test for \"\" if ALLOW-EMPTY-NAME-P=0A= is non-nil. They can then perform an appropriate action in case of=0A= empty input.=0A= =0A= Optional arg PROMPT is the prompt. Nil means use a default prompt."=0A= (interactive "p") ; Always convert to RGB = interactively.=0A= (let* ((completion-ignore-case t)=0A= ;; Free variables here: `eyedrop-picked-foreground', = `eyedrop-picked-background'.=0A= ;; They are defined in library `palette.el' or library = `eyedropper.el'.=0A= (colors (if (fboundp = 'eyedrop-foreground-at-point)=0A= (append (and = eyedrop-picked-foreground=0A= '(("*copied = foreground*")))=0A= (and = eyedrop-picked-background=0A= '(("*copied = background*")))=0A= '(("*mouse-2 foreground*")=0A= ("*mouse-2 background*")=0A= ("*point foreground*") = ("*point background*"))=0A= = (hexrgb-defined-colors-alist))=0A= (hexrgb-defined-colors-alist)))=0A= (color (completing-read (or prompt "Color = (name or #R+G+B+): ")=0A= colors))=0A= hex-string)=0A= (when (fboundp 'eyedrop-foreground-at-point)=0A= (cond ((string=3D "*copied foreground*" color) (setq color = eyedrop-picked-foreground))=0A= ((string=3D "*copied background*" color) (setq color = eyedrop-picked-background))=0A= ((string=3D "*point foreground*" color) (setq color = (eyedrop-foreground-at-point)))=0A= ((string=3D "*point background*" color) (setq color = (eyedrop-background-at-point)))=0A= ((string=3D "*mouse-2 foreground*" color)=0A= (setq color (prog1 (eyedrop-foreground-at-mouse=0A= (read-event "Click `mouse-2' to choose = foreground color - "))=0A= (read-event)))) ; Discard mouse up event.=0A= ((string=3D "*mouse-2 background*" color)=0A= (setq color (prog1 (eyedrop-background-at-mouse=0A= (read-event "Click `mouse-2' to choose = background color - "))=0A= (read-event)))))) ; Discard mouse up event.=0A= (setq hex-string (or (string-match = "^#\\([a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]\\)+$" color)=0A= (and (string-match = "^\\([a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]\\)+$" color)=0A= t)))=0A= (if (and allow-empty-name-p (string=3D "" color))=0A= ""=0A= (when (and hex-string (not (eq 0 hex-string)))=0A= (setq color (concat "#" color))) ; No #; add it.=0A= (unless hex-string=0A= (when (or (string=3D "" color)=0A= (not (if (fboundp 'test-completion) ; Not defined in = Emacs 20.=0A= (test-completion color colors)=0A= (try-completion color colors))))=0A= (error "No such color: %S" color))=0A= (when convert-to-RGB-p (setq color (hexrgb-color-name-to-hex = color))))=0A= (when (interactive-p) (message "Color: `%s'" color))=0A= color)))=0A= =0A= (defun hexrgb-rgb-hex-string-p (color &optional laxp)=0A= "Non-nil if COLOR is an RGB string #XXXXXXXXXXXX.=0A= Each X is a hex digit. The number of Xs must be a multiple of 3, with=0A= the same number of Xs for each of red, green, and blue.=0A= =0A= Non-nil optional arg LAXP means that the initial `#' is optional. In=0A= that case, for a valid string of hex digits: when # is present 0 is=0A= returned; otherwise, t is returned."=0A= (or (string-match "^#\\([a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]\\)+$" color)=0A= (and laxp (string-match = "^\\([a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]\\)+$" color) t)))=0A= =0A= ;;;###autoload=0A= (defun hexrgb-complement (color)=0A= "Return the color that is the complement of COLOR."=0A= (interactive (list (hexrgb-read-color)))=0A= (setq color (hexrgb-color-name-to-hex color))=0A= (let ((red (hexrgb-red color))=0A= (green (hexrgb-green color))=0A= (blue (hexrgb-blue color)))=0A= (setq color (hexrgb-rgb-to-hex (- 1.0 red) (- 1.0 green) (- 1.0 = blue))))=0A= (when (interactive-p) (message "Complement: `%s'" color))=0A= color)=0A= =0A= ;;;###autoload=0A= (defun hexrgb-hue (color)=0A= "Return the hue component of COLOR, in range 0 to 1 inclusive.=0A= COLOR is a color name or hex RGB string that starts with \"#\"."=0A= (interactive (list (hexrgb-read-color)))=0A= (setq color (hexrgb-color-name-to-hex color))=0A= (car (hexrgb-rgb-to-hsv (hexrgb-red color) (hexrgb-green color) = (hexrgb-blue color))))=0A= =0A= ;;;###autoload=0A= (defun hexrgb-saturation (color)=0A= "Return the saturation component of COLOR, in range 0 to 1 inclusive.=0A= COLOR is a color name or hex RGB string that starts with \"#\"."=0A= (interactive (list (hexrgb-read-color)))=0A= (setq color (hexrgb-color-name-to-hex color))=0A= (cadr (hexrgb-rgb-to-hsv (hexrgb-red color) (hexrgb-green color) = (hexrgb-blue color))))=0A= =0A= ;;;###autoload=0A= (defun hexrgb-value (color)=0A= "Return the value component of COLOR, in range 0 to 1 inclusive.=0A= COLOR is a color name or hex RGB string that starts with \"#\"."=0A= (interactive (list (hexrgb-read-color)))=0A= (setq color (hexrgb-color-name-to-hex color))=0A= (caddr (hexrgb-rgb-to-hsv (hexrgb-red color) (hexrgb-green color) = (hexrgb-blue color))))=0A= =0A= ;;;###autoload=0A= (defun hexrgb-red (color)=0A= "Return the red component of COLOR, in range 0 to 1 inclusive.=0A= COLOR is a color name or hex RGB string that starts with \"#\"."=0A= (interactive (list (hexrgb-read-color)))=0A= (setq color (hexrgb-color-name-to-hex color))=0A= (/ (hexrgb-hex-to-int (substring color 1 (1+ (/ (1- (length color)) = 3))))=0A= (expt 16.0 (/ (1- (length color)) 3.0))))=0A= =0A= ;;;###autoload=0A= (defun hexrgb-green (color)=0A= "Return the green component of COLOR, in range 0 to 1 inclusive.=0A= COLOR is a color name or hex RGB string that starts with \"#\"."=0A= (interactive (list (hexrgb-read-color)))=0A= (setq color (hexrgb-color-name-to-hex color))=0A= (let* ((len (/ (1- (length color)) 3))=0A= (start (1+ len)))=0A= (/ (hexrgb-hex-to-int (substring color start (+ start len)))=0A= (expt 16.0 (/ (1- (length color)) 3.0)))))=0A= =0A= ;;;###autoload=0A= (defun hexrgb-blue (color)=0A= "Return the blue component of COLOR, in range 0 to 1 inclusive.=0A= COLOR is a color name or hex RGB string that starts with \"#\"."=0A= (interactive (list (hexrgb-read-color)))=0A= (setq color (hexrgb-color-name-to-hex color))=0A= (let* ((len (/ (1- (length color)) 3))=0A= (start (+ 1 len len)))=0A= (/ (hexrgb-hex-to-int (substring color start (+ start len)))=0A= (expt 16.0 (/ (1- (length color)) 3.0)))))=0A= =0A= (defun hexrgb-rgb-to-hsv (red green blue)=0A= "Convert RED, GREEN, BLUE components to HSV (hue, saturation, value).=0A= Each input component is 0.0 to 1.0, inclusive.=0A= Returns a list of HSV components of value 0.0 to 1.0, inclusive."=0A= (let* ((min (min red green blue))=0A= (max (max red green blue))=0A= (value max)=0A= (delta (- max min))=0A= hue saturation)=0A= (if (hexrgb-approx-equal 0.0 delta)=0A= (setq hue 0.0=0A= saturation 0.0) ; Gray scale - no color; only = value.=0A= (if (and (condition-case nil=0A= (setq saturation (/ delta max))=0A= (arith-error nil))=0A= ;; Must be a number, not a NaN. The standard test for a = NaN is (not (=3D N N)),=0A= ;; but an Emacs 20 bug makes (=3D N N) return t for a NaN = also.=0A= (or (< emacs-major-version 21) (=3D saturation = saturation))) =0A= (if (hexrgb-approx-equal 0.0 saturation)=0A= (setq hue 0.0=0A= saturation 0.0) ; Again, no color; only value.=0A= ;; Color=0A= (setq hue (if (hexrgb-approx-equal red max)=0A= (/ (- green blue) delta) ; Between yellow & = magenta.=0A= (if (hexrgb-approx-equal green max)=0A= (+ 2.0 (/ (- blue red) delta)) ; Between = cyan & yellow.=0A= (+ 4.0 (/ (- red green) delta)))) ; Between = magenta & cyan.=0A= hue (/ hue 6.0))=0A= ;; (when (<=3D hue 0.0) (setq hue (+ hue 1.0))) ; $$$$$$=0A= ;; (when (>=3D hue 1.0) (setq hue (- hue 1.0)))) ; $$$$$$=0A= (when (< hue 0.0) (setq hue (+ hue 1.0)))=0A= (when (> hue 1.0) (setq hue (- hue 1.0))))=0A= (setq hue 0.0 ; Div by zero (max=3D0): H:=3D0, = S:=3D0. (Hue undefined.)=0A= saturation 0.0)))=0A= (list hue saturation value)))=0A= =0A= (defun hexrgb-hsv-to-rgb (hue saturation value)=0A= "Convert HUE, SATURATION, VALUE components to RGB (red, green, blue).=0A= Each input component is 0.0 to 1.0, inclusive.=0A= Returns a list of RGB components of value 0.0 to 1.0, inclusive."=0A= (let (red green blue int-hue fract pp qq tt ww)=0A= (if (hexrgb-approx-equal 0.0 saturation)=0A= (setq red value=0A= green value=0A= blue value) ; Gray=0A= (setq hue (* hue 6.0) ; Sectors: 0 to 5=0A= int-hue (floor hue)=0A= fract (- hue int-hue)=0A= pp (* value (- 1 saturation))=0A= qq (* value (- 1 (* saturation fract)))=0A= ww (* value (- 1 (* saturation (- 1 (- hue = int-hue))))))=0A= (case int-hue=0A= ((0 6) (setq red value=0A= green ww=0A= blue pp))=0A= (1 (setq red qq=0A= green value=0A= blue pp))=0A= (2 (setq red pp=0A= green value=0A= blue ww))=0A= (3 (setq red pp=0A= green qq=0A= blue value))=0A= (4 (setq red ww=0A= green pp=0A= blue value))=0A= (otherwise (setq red value=0A= green pp=0A= blue qq))))=0A= (list red green blue)))=0A= =0A= (defun hexrgb-hsv-to-hex (hue saturation value)=0A= "Return the hex RBG color string for inputs HUE, SATURATION, VALUE.=0A= The inputs are each in the range 0 to 1.=0A= The output string is of the form \"#RRRRGGGGBBBB\"."=0A= (hexrgb-color-values-to-hex=0A= (mapcar (lambda (x) (floor (* x 65535.0))) (hexrgb-hsv-to-rgb hue = saturation value))))=0A= =0A= (defun hexrgb-rgb-to-hex (red green blue)=0A= "Return the hex RBG color string for inputs RED, GREEN, BLUE.=0A= The inputs are each in the range 0 to 1.=0A= The output string is of the form \"#RRRRGGGGBBBB\"."=0A= (hexrgb-color-values-to-hex=0A= (mapcar (lambda (x) (floor (* x 65535.0))) (list red green blue))))=0A= =0A= (defun hexrgb-hex-to-hsv (color)=0A= "Return a list of HSV (hue, saturation, value) color components.=0A= Each component is a value from 0.0 to 1.0, inclusive.=0A= COLOR is a color name or a hex RGB string that starts with \"#\" and=0A= is followed by an equal number of hex digits for red, green, and blue=0A= components."=0A= (let ((rgb-components (hexrgb-hex-to-rgb color)))=0A= (apply #'hexrgb-rgb-to-hsv rgb-components)))=0A= =0A= (defun hexrgb-hex-to-rgb (color)=0A= "Return a list of RGB (red, green, blue) color components.=0A= Each component is a value from 0.0 to 1.0, inclusive.=0A= COLOR is a color name or a hex RGB string that starts with \"#\" and=0A= is followed by an equal number of hex digits for red, green, and blue=0A= components."=0A= (unless (hexrgb-rgb-hex-string-p color) (setq color = (hexrgb-color-name-to-hex color)))=0A= (let ((len (/ (1- (length color)) 3)))=0A= (list (/ (hexrgb-hex-to-int (substring color 1 (1+ len))) 65535.0)=0A= (/ (hexrgb-hex-to-int (substring color (1+ len) (+ 1 len = len))) 65535.0)=0A= (/ (hexrgb-hex-to-int (substring color (+ 1 len len))) = 65535.0))))=0A= =0A= (defun hexrgb-color-name-to-hex (color)=0A= "Return the RGB hex string for the COLOR name, starting with \"#\".=0A= If COLOR is already a string starting with \"#\", then just return it."=0A= (let ((components (x-color-values color)))=0A= (unless components (error "No such color: %S" color))=0A= (unless (hexrgb-rgb-hex-string-p color)=0A= (setq color (hexrgb-color-values-to-hex components))))=0A= color)=0A= =0A= ;; Color "components" would be better in the name than color "value"=0A= ;; but this name follows the Emacs tradition (e.g. `x-color-values',=0A= ;; 'ps-color-values', `ps-e-x-color-values').=0A= (defun hexrgb-color-values-to-hex (components)=0A= "Convert list of rgb color COMPONENTS to a hex string, #XXXXXXXXXXXX.=0A= Each X in the string is a hexadecimal digit.=0A= Input COMPONENTS is as for the output of `x-color-values'."=0A= ;; Just hard-code 4 as the number of hex digits, since `x-color-values'=0A= ;; seems to produce appropriate integer values for `4'.=0A= (concat "#" (hexrgb-int-to-hex (nth 0 components) 4) ; red=0A= (hexrgb-int-to-hex (nth 1 components) 4) ; green=0A= (hexrgb-int-to-hex (nth 2 components) 4))) ; blue=0A= =0A= (defun hexrgb-hex-to-color-values (color)=0A= "Convert hex COLOR to a list of RGB color components.=0A= COLOR is a hex rgb color string, #XXXXXXXXXXXX=0A= Each X in the string is a hexadecimal digit. There are 3N X's, N > 0.=0A= The output list is as for `x-color-values'."=0A= (let* ((hex-strgp (string-match=0A= = "^\\(#\\)?\\(\\([a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]\\)+\\)$"=0A= color))=0A= (ndigits (/ (if (eq (match-beginning 1) (match-end 1))=0A= (length color)=0A= (1- (length color)))=0A= 3))=0A= red green blue)=0A= (unless hex-strgp (error "Invalid RGB color string: %s" color))=0A= (setq color (substring color (match-beginning 2) (match-end 2))=0A= red (hexrgb-hex-to-int (substring color 0 ndigits))=0A= green (hexrgb-hex-to-int (substring color ndigits (* 2 = ndigits)))=0A= blue (hexrgb-hex-to-int (substring color (* 2 ndigits) (* 3 = ndigits))))=0A= (list red green blue)))=0A= =0A= (defun hexrgb-increment-red (hex nb-digits increment &optional wrap-p)=0A= "Increment red component of rgb string HEX by INCREMENT.=0A= String HEX starts with \"#\". Each color is NB-DIGITS hex digits long.=0A= If optional arg WRAP-P is non-nil then the result wraps around zero.=0A= For example, with NB-DIGITS 3, incrementing \"#fffffffff\" by 1=0A= causes it to wrap around to \"#000ffffff\"."=0A= (concat "#"=0A= (hexrgb-increment-hex (substring hex 1 (1+ nb-digits)) = nb-digits increment wrap-p)=0A= (substring hex (1+ nb-digits) (1+ (* nb-digits 2)))=0A= (substring hex (1+ (* nb-digits 2)))))=0A= =0A= (defun hexrgb-increment-green (hex nb-digits increment &optional wrap-p)=0A= "Increment green component of rgb string HEX by INCREMENT.=0A= String HEX starts with \"#\". Each color is NB-DIGITS hex digits long.=0A= If optional arg WRAP-P is non-nil then the result wraps around zero.=0A= For example, with NB-DIGITS 3, incrementing \"#fffffffff\" by 1=0A= causes it to wrap around to \"#fff000fff\"."=0A= (concat=0A= "#" (substring hex 1 (1+ nb-digits))=0A= (hexrgb-increment-hex (substring hex (1+ nb-digits) (1+ (* nb-digits = 2)))=0A= nb-digits=0A= increment=0A= wrap-p)=0A= (substring hex (1+ (* nb-digits 2)))))=0A= =0A= (defun hexrgb-increment-blue (hex nb-digits increment &optional wrap-p)=0A= "Increment blue component of rgb string HEX by INCREMENT.=0A= String HEX starts with \"#\". Each color is NB-DIGITS hex digits long.=0A= If optional arg WRAP-P is non-nil then the result wraps around zero.=0A= For example, with NB-DIGITS 3, incrementing \"#fffffffff\" by 1=0A= causes it to wrap around to \"#ffffff000\"."=0A= (concat "#" (substring hex 1 (1+ (* nb-digits 2)))=0A= (hexrgb-increment-hex (substring hex (1+ (* nb-digits 2)))=0A= nb-digits=0A= increment=0A= wrap-p)))=0A= =0A= (defun hexrgb-increment-equal-rgb (hex nb-digits increment &optional = wrap-p)=0A= "Increment each color component (r,g,b) of rgb string HEX by INCREMENT.=0A= String HEX starts with \"#\". Each color is NB-DIGITS hex digits long.=0A= If optional arg WRAP-P is non-nil then the result wraps around zero.=0A= For example, with NB-DIGITS 3, incrementing \"#fffffffff\" by 1=0A= causes it to wrap around to \"#000000000\"."=0A= (concat=0A= "#"=0A= (hexrgb-increment-hex (substring hex 1 (1+ nb-digits)) nb-digits = increment wrap-p)=0A= (hexrgb-increment-hex (substring hex (1+ nb-digits) (1+ (* nb-digits = 2)))=0A= nb-digits=0A= increment=0A= wrap-p)=0A= (hexrgb-increment-hex (substring hex (1+ (* nb-digits 2))) nb-digits = increment wrap-p)))=0A= =0A= (defun hexrgb-increment-hex (hex nb-digits increment &optional wrap-p)=0A= "Increment hexadecimal-digits string HEX by INCREMENT.=0A= Only the first NB-DIGITS of HEX are used.=0A= If optional arg WRAP-P is non-nil then the result wraps around zero.=0A= For example, with NB-DIGITS 3, incrementing \"fff\" by 1 causes it=0A= to wrap around to \"000\"."=0A= (let* ((int (hexrgb-hex-to-int hex))=0A= (new-int (+ increment int)))=0A= (if (or wrap-p=0A= (and (>=3D int 0) ; Not too large for the = machine.=0A= (>=3D new-int 0) ; For the case where increment = < 0.=0A= (<=3D (length (format (concat "%X") new-int)) = nb-digits))) ; Not too long.=0A= (hexrgb-int-to-hex new-int nb-digits) ; Use incremented number.=0A= hex))) ; Don't increment.=0A= =0A= (defun hexrgb-hex-to-int (hex)=0A= "Convert HEX string argument to an integer.=0A= The characters of HEX must be hex characters."=0A= (let* ((factor 1)=0A= (len (length hex))=0A= (indx (1- len))=0A= (int 0))=0A= (while (>=3D indx 0)=0A= (setq int (+ int (* factor (hexrgb-hex-char-to-integer (aref = hex indx))))=0A= indx (1- indx)=0A= factor (* 16 factor)))=0A= int))=0A= =0A= ;; From `hexl.el'. This is the same as `hexl-hex-char-to-integer' = defined there.=0A= (defun hexrgb-hex-char-to-integer (character)=0A= "Take a CHARACTER and return its value as if it were a hex digit."=0A= (if (and (>=3D character ?0) (<=3D character ?9))=0A= (- character ?0)=0A= (let ((ch (logior character 32)))=0A= (if (and (>=3D ch ?a) (<=3D ch ?f))=0A= (- ch (- ?a 10))=0A= (error "Invalid hex digit `%c'" ch)))))=0A= =0A= ;; Originally, I used the code from `int-to-hex-string' in `float.el'.=0A= ;; This version is thanks to Juri Linkov .=0A= ;;=0A= (defun hexrgb-int-to-hex (int &optional nb-digits)=0A= "Convert integer argument INT to a #XXXXXXXXXXXX format hex string.=0A= Each X in the output string is a hexadecimal digit.=0A= NB-DIGITS is the number of hex digits. If INT is too large to be=0A= represented with NB-DIGITS, then the result is truncated from the=0A= left. So, for example, INT=3D256 and NB-DIGITS=3D2 returns \"00\", since=0A= the hex equivalent of 256 decimal is 100, which is more than 2 digits."=0A= (setq nb-digits (or nb-digits 4))=0A= (substring (format (concat "%0" (int-to-string nb-digits) "X") int) (- = nb-digits)))=0A= =0A= ;; Inspired by Elisp Info manual, node "Comparison of Numbers".=0A= (defun hexrgb-approx-equal (x y &optional rfuzz afuzz)=0A= "Return non-nil if numbers X and Y are approximately equal.=0A= RFUZZ is a relative fuzz factor. AFUZZ is an absolute fuzz factor.=0A= RFUZZ defaults to 1.0e-8. AFUZZ defaults to (/ RFUZZ 10).=0A= RFUZZ and AFUZZ are converted to their absolute values.=0A= The algorithm is:=0A= (< (abs (- X Y)) (+ AFUZZ (* RFUZZ (+ (abs X) (abs Y)))))."=0A= (setq rfuzz (or rfuzz 1.0e-8)=0A= rfuzz (abs rfuzz)=0A= afuzz (or afuzz (/ rfuzz 10))=0A= afuzz (abs afuzz))=0A= (< (abs (- x y)) (+ afuzz (* rfuzz (+ (abs x) (abs y))))))=0A= =0A= (defun hexrgb-color-value-to-float (n)=0A= "Return the floating-point equivalent of color-component value N.=0A= N must be an integer between 0 and 65535, or else an error is raised."=0A= (unless (and (wholenump n) (<=3D n 65535))=0A= (error "Not a whole number less than 65536"))=0A= (/ (float n) 65535.0))=0A= =0A= (defun hexrgb-float-to-color-value (x)=0A= "Return the color-component value equivalent of floating-point number = X.=0A= X must be between 0.0 and 1.0, or else an error is raised."=0A= (unless (and (numberp x) (<=3D 0.0 x) (<=3D x 1.0))=0A= (error "Not a floating-point number between 0.0 and 1.0"))=0A= (floor (* x 65535.0)))=0A= =0A= ;;;;;;;;;;;;;;;;;;;;;;;;;;;=0A= =0A= (provide 'hexrgb)=0A= =0A= ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=0A= ;;; hexrgb.el ends here=0A= ------=_NextPart_000_0010_01CC2E52.E5002650 Content-Type: application/octet-stream; name="oneonone.el" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="oneonone.el" ;;; oneonone.el --- Frame configuration that uses one frame per window.=0A= ;;=0A= ;; Filename: oneonone.el=0A= ;; Description: Frame configuration that uses one frame per window.=0A= ;; Author: Drew Adams=0A= ;; Maintainer: Drew Adams=0A= ;; Copyright (C) 1999-2011, Drew Adams, all rights reserved.=0A= ;; Created: Fri Apr 2 12:34:20 1999=0A= ;; Version: 21.1=0A= ;; Last-Updated: Sat Jun 18 08:18:01 2011 (-0700)=0A= ;; By: dradams=0A= ;; Update #: 2574=0A= ;; URL: http://www.emacswiki.org/cgi-bin/wiki/oneonone.el=0A= ;; Keywords: local, frames=0A= ;; Compatibility: GNU Emacs: 20.x, 21.x, 22.x, 23.x=0A= ;;=0A= ;; Features that might be required by this library:=0A= ;;=0A= ;; `avoid', `cl', `frame-cmds', `frame-fns', `hexrgb', `misc-fns',=0A= ;; `oneonone', `strings', `thingatpt', `thingatpt+', `zoom-frm'.=0A= ;;=0A= ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=0A= ;;=0A= ;;; Commentary:=0A= ;;=0A= ;; Frame configuration that uses one frame per window.=0A= ;;=0A= ;; This library is part of One-on-One Emacs, a collection of=0A= ;; libraries that try to make Emacs more frame-oriented and less=0A= ;; window-oriented.=0A= ;;=0A= ;; This library sets up Emacs to use multiple frames: individual=0A= ;; frames are used, by default, instead of Emacs windows. That is,=0A= ;; the default is to use a frame for each Emacs window: one window on=0A= ;; one frame.=0A= ;;=0A= ;; You can configure each of the frames defined here.=0A= ;;=0A= ;; Default properties are defined here for normal frames and=0A= ;; "special" frames, which show "special-display buffers" (see Emacs=0A= ;; manual for info on such frames).=0A= ;;=0A= ;; In addition, these user options control the creation of three=0A= ;; separate, specialized frames:=0A= ;;=0A= ;; - `1on1-*Help*-frame-flag' - *Help* buffer frame=0A= ;; - `1on1-*Completions*-frame-flag' - *Completions* buffer frame=0A= ;; - `1on1-minibuffer-frame-flag' - minibuffer frame=0A= ;;=0A= ;; Buffers *Help* and *Completions* are always displayed in their own=0A= ;; frames. In addition, if `1on1-*Help*-frame-flag' or=0A= ;; `1on1-*Completions*-frame-flag' is non-nil, then the *Help* or=0A= ;; *Completions* frame has a special (customizable) appearance.=0A= ;;=0A= ;; If `1on1-minibuffer-frame-flag' is non-nil (the default value),=0A= ;; then the minibuffer is shown in its own frame,=0A= ;; `1on1-minibuffer-frame'; this is the only frame to have a=0A= ;; minibuffer. If you customize `1on1-minibuffer-frame-flag' to nil,=0A= ;; then each frame will have its own minibuffer, as usual, and there=0A= ;; will be no standalone minibuffer frame.=0A= ;; =0A= ;; By default, if you use a standalone minibuffer frame, it is=0A= ;; automatically sized to the full width of your display and placed=0A= ;; at the bottom of the display.=0A= ;;=0A= ;; If `1on1-fit-minibuffer-frame-flag' is non-nil,=0A= ;; `1on1-minibuffer-frame-flag' is non-nil, and you also use library=0A= ;; `fit-frame.el', then, whenever the minibuffer is active, the=0A= ;; minibuffer frame height is automatically adjusted to fit its=0A= ;; content after each command or user event (e.g. each key press).=0A= ;; Options `1on1-fit-minibuffer-frame-max-height' and=0A= ;; `1on1-fit-minibuffer-frame-max-height-percent' define the maximum=0A= ;; possible height for this behavior. In addition, if you bind=0A= ;; `1on1-fit-minibuffer-frame' to a key (I use `C-o'), then you can=0A= ;; use that key repeatedly to increase the height by one line, even=0A= ;; beyond the maximum.=0A= ;;=0A= ;; To help you perceive changes to different minibuffer recursion=0A= ;; levels, the background color of the minibuffer frame is changed=0A= ;; slightly with each recursion-depth change.=0A= ;;=0A= ;; This library is especially useful if used in combination with=0A= ;; One-on-One Emacs libraries `autofit-frame.el', which automatically=0A= ;; fits frames to their sole window, and `fit-frame.el', which lets=0A= ;; you fit a frame to its selected window manually. Library=0A= ;; `autofit-frame.el' uses library `fit-frame.el'.=0A= ;;=0A= ;; Because Emacs is not really designed to be frame-oriented, there=0A= ;; are many built-in and standard functions that produce=0A= ;; less-than-optimal results when frames, instead of windows, are the=0A= ;; default. In other One-on-One Emacs libraries, I have fixed most=0A= ;; of these built-in functions to play well with frames.=0A= ;;=0A= ;; For more information on One-on-One Emacs see=0A= ;; http://www.emacswiki.org/cgi-bin/wiki/OneOnOneEmacs.=0A= ;;=0A= ;; To use this library, put the following at the *END* of your init=0A= ;; file, `.emacs' (or `_emacs'). In particular, if your init file=0A= ;; contains a `custom-set-variables' expression, then the following=0A= ;; must appear *AFTER* that expression, in order for this to take=0A= ;; into account your customizations of any `1on1-' user options.=0A= ;;=0A= ;; (require 'oneonone)=0A= ;; (1on1-emacs)=0A= ;;=0A= ;; Initial frame: By default, the initial Emacs frame is like all=0A= ;; other normal (non-special-display) frames; that is,=0A= ;; `initial-frame-alist' effectively uses the frame properties=0A= ;; defined in `default-frame-alist'. If you would like the initial=0A= ;; frame to be different, set `default-frame-alist' to nil after=0A= ;; requiring `oneonone.el' but before executing `1on1-emacs':=0A= ;;=0A= ;; (require 'oneonone)=0A= ;; (setq default-frame-alist nil)=0A= ;; (setq initial-frame-alist '((background-color . "White"))); e.g.=0A= ;; (1on1-emacs)=0A= ;;=0A= ;; If you want the text cursor to change to a box when Emacs is idle,=0A= ;; then add this line also to your init file:=0A= ;;=0A= ;; (toggle-box-cursor-when-idle 1) ; Turn on box cursor when idle.=0A= ;;=0A= ;; Info and Customize frames: I recommend that you put the following=0A= ;; code in your init file, so that Info and Customize buffers will=0A= ;; display in their own frames. Which code to use depends on your=0A= ;; version of GNU Emacs.=0A= ;;=0A= ;; (cond ((< emacs-major-version 21)=0A= ;; (remove-hook 'same-window-buffer-names "*info*"))=0A= ;; ((=3D emacs-version 21)=0A= ;; (remove-hook 'same-window-buffer-names "*info*")=0A= ;; (remove-hook 'same-window-regexps "\\`\\*Customiz.*\\*\\'"))=0A= ;; (t=0A= ;; (remove-hook 'same-window-regexps = "\\*info\\*\\(\\|<[0-9]+>\\)")=0A= ;; (remove-hook 'same-window-regexps = "\\`\\*Customiz.*\\*\\'")))=0A= ;;=0A= ;; Recommended key bindings (requires library `fit-frame.el'):=0A= ;;=0A= ;; (define-key minibuffer-local-map "\C-o"=0A= ;; '1on1-fit-minibuffer-frame)=0A= ;; (define-key minibuffer-local-must-match-map "\C-o"=0A= ;; '1on1-fit-minibuffer-frame)=0A= ;; (define-key minibuffer-local-completion-map "\C-o"=0A= ;; '1on1-fit-minibuffer-frame)=0A= ;;=0A= ;;=0A= ;; Notes on user options defined here:=0A= ;; ---------------------------------=0A= ;;=0A= ;; Some user options are used here only as conveniences to define=0A= ;; frame-parameter alists. They are defined using `defvar', not=0A= ;; `defcustom', because you cannot use Customize to define them=0A= ;; independently of the alist user options they help to define. The=0A= ;; alists themselves are the variables to customize. If you want to=0A= ;; change the `defvar' variables individually and then use them to=0A= ;; set the alist variables, then use `setq', not Customize, to change=0A= ;; them, and restart Emacs for their changes to take effect.=0A= ;;=0A= ;; Changes to any user options defined here with `defcustom' will=0A= ;; take effect as soon as `1on1-emacs' is executed, so you can do=0A= ;; `M-x 1on1-emacs' to see their changes (no need to restart=0A= ;; Emacs).=0A= ;;=0A= ;; User options `1on1-color-minibuffer-frame-on-setup-increment' and=0A= ;; `1on1-color-minibuffer-frame-on-exit-increment' determine how much=0A= ;; to change the color of the minibuffer frame when the minibuffer is=0A= ;; entered and exitted. They are hue increments, and should be=0A= ;; opposite in sign. They should cancel each other out, so that the=0A= ;; color returns to what it was initially at any given=0A= ;; recursive-minibuffer depth. However, because of the way HSV and=0A= ;; RGB color-component conversion works, the best cancellation does=0A= ;; not occur when these have the same absolute value. And, how much=0A= ;; their absolute values should differ depends on that magnitude.=0A= ;; It's best to just set one of these to an increment you like, and=0A= ;; then fiddle with the other until they more or less cancel.=0A= ;;=0A= ;;=0A= ;; New functions and macros defined here (each has prefix `1on1-'):=0A= ;;=0A= ;; `box-cursor-when-idle', `change-cursor-on-input-method',=0A= ;; `change-cursor-on-overwrite/read-only',=0A= ;; `color-minibuffer-frame-on-exit',=0A= ;; `color-minibuffer-frame-on-setup',=0A= ;; `color-isearch-minibuffer-frame', `display-*Completions*-frame',=0A= ;; `display-*Help*-frame', `emacs', `fit-minibuffer-frame',=0A= ;; `flash-ding-minibuffer-frame', `increment-color-hue',=0A= ;; `minibuffer-prompt-end', `reset-minibuffer-frame',=0A= ;; `set-box-cursor-when-idle-interval', `set-cursor-type',=0A= ;; `set-minibuffer-frame-top/bottom', `set-minibuffer-frame-width',=0A= ;; `setup-minibuffer-frame-coloring',=0A= ;; `setup-mode-line'. `toggle-box-cursor-when-idle'.=0A= ;;=0A= ;; Customizable user options defined here (each has prefix `1on1-'):=0A= ;;=0A= ;; `*Completions*-frame-flag', `*Completions*-frame-at-right-flag',=0A= ;; `*Help*-frame-flag', `active-minibuffer-frame-background',=0A= ;; `active-mode-line-background',=0A= ;; `change-cursor-on-overwrite/read-only-flag',=0A= ;; `color-minibuffer-frame-on-exit-increment',=0A= ;; `color-minibuffer-frame-on-setup-increment',=0A= ;; `color-mode-line-flag', `completions-frame-background',=0A= ;; `completions-frame-mouse+cursor-color',=0A= ;; `completions-frame-width',=0A= ;; `completions-frame-zoom-font-difference',=0A= ;; `default-frame-cursor-color',=0A= ;; `default-frame-cursor-color-input-method',=0A= ;; `default-frame-cursor-type',=0A= ;; `default-frame-cursor-type-overwrite/read-only',=0A= ;; `default-frame-alist', `help-frame-background',=0A= ;; `help-frame-mouse+cursor-color',=0A= ;; `inactive-minibuffer-frame-background',=0A= ;; `inactive-mode-line-background',=0A= ;; `isearch-minibuffer-frame-background', `minibuffer-frame-alist',=0A= ;; `minibuffer-frame-flag', `minibuffer-frame-left',=0A= ;; `minibuffer-frame-top/bottom', `minibuffer-frame-width',=0A= ;; `minibuffer-frame-width-percent', `special-display-frame-alist'.=0A= ;;=0A= ;; Non-customizable user options defined here (prefix `1on1-'):=0A= ;;=0A= ;; `default-frame-background', `default-frame-font',=0A= ;; `default-frame-foreground', `default-frame-menu-bar-lines',=0A= ;; `default-frame-mouse-color', `default-frame-size',=0A= ;; `default-frame-upper-left-corner',=0A= ;; `default-special-frame-background',=0A= ;; `default-special-frame-cursor-color',=0A= ;; `default-special-frame-font',=0A= ;; `default-special-frame-foreground',=0A= ;; `default-special-frame-menu-bar-lines',=0A= ;; `default-special-frame-mouse-color',=0A= ;; `default-special-frame-size',=0A= ;; `default-special-frame-upper-left-corner',=0A= ;; `minibuffer-frame-background', `minibuffer-frame-cursor-color',=0A= ;; `minibuffer-frame-font', `minibuffer-frame-foreground',=0A= ;; `minibuffer-frame-height', `minibuffer-frame-mouse-color'.=0A= ;;=0A= ;; Other new variables defined here (each has prefix `1on1-'):=0A= ;;=0A= ;; `box-cursor-when-idle-p', `box-cursor-when-idle-interval',=0A= ;; `box-cursor-when-idle-timer', `last-cursor-type',=0A= ;; `minibuffer-frame'.=0A= ;;=0A= ;;=0A= ;; ***** NOTE: These EMACS PRIMITIVES have been REDEFINED HERE:=0A= ;;=0A= ;; `abort-recursive-edit', `top-level' -=0A= ;; Reset color of minibuffer frame to "inactive" color.=0A= ;;=0A= ;; `y-or-n-p' - Temporarily color minibuffer frame to "active" color.=0A= ;;=0A= ;;=0A= ;; Acknowledgements:=0A= ;;=0A= ;; The cursor-changing on input method and read-only was inspired by=0A= ;; Juri Linkov . Joe Casadonte =0A= ;; wrote a similar hook (`joc-cursor-type-set-hook'), which he got=0A= ;; from Steve Kemp...=0A= ;;=0A= ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=0A= ;;=0A= ;;; Change Log:=0A= ;;=0A= ;; 2011/06/15 dadams=0A= ;; Removed soft require of files+.el (switch-to-buffer-other-frame = no longer used).=0A= ;; 2011/01/04 dadams=0A= ;; Added autoload cookies for defgroup, defcustom, and commands.=0A= ;; 2010/11/30 dadams=0A= ;; 1on1-minibuffer-frame-alist: Change fallback value from nil to 0 = (Emacs bug #1077).=0A= ;; 2010/10/27 dadams=0A= ;; 1on1-default-frame-alist:=0A= ;; Put back setting of tool-bar-lines for Emacs 24. Emacs 24 bug = was fixed.=0A= ;; 2010/07/09 dadams=0A= ;; 1on1-emacs: Soft-require fit-frame.el.=0A= ;; 2010/07/04 dadams=0A= ;; 1on1-default-frame-alist:=0A= ;; Temp workaround: do not set tool-bar-lines for Emacs 24 (Emacs = bug).=0A= ;; 2009/06/19 dadams=0A= ;; 1on1-completions-frame-zoom-font-difference: Supplied missing = :type and :group.=0A= ;; 2009/05/15 dadams=0A= ;; Added: 1on1-fit-minibuffer-frame-(flag|max-height(-percent)).=0A= ;; 1on1-emacs: Add/remove 1on1-fit-minibuffer-frame for = post-command-hook (if *-flag).=0A= ;; 1on1-set-minibuffer-frame-top/bottom: Redisplay.=0A= ;; 1on1-fit-minibuffer-frame:=0A= ;; Do nothing unless 1on1-fit-minibuffer-frame-flag.=0A= ;; Test last-command vs 1on1-fit-minibuffer-frame, not vs = this-command.=0A= ;; Pass current frame width to fit-frame.=0A= ;; Bind to the 1on1 minibuffer values for the call to fit-frame:=0A= ;; = fit-frame-max-height(-percent),(fit-frame|window)-min-height,fit-frame-em= pty-*.=0A= ;; Don't bind: frame-width, fit-frame-(min|max)-width, = window-min-width.=0A= ;; Don't provide any extra height for Emacs 22+.=0A= ;; 2009/05/03 dadams=0A= ;; Corrected commentary: some customizable vars were listed as = non-customizable.=0A= ;; 2009/04/18 dadams=0A= ;; 1on1-emacs: Raise error if run without a graphics display.=0A= ;; 2009/04/10 dadams=0A= ;; 1on1-emacs: No menu bar or tool bar for *Completions* frame.=0A= ;; 2009/02/11 dadams=0A= ;; 1on1-display-*(Help|Completions)*-frame:=0A= ;; Protect x-pointer-shape with boundp (Emacs 23 bug #2296 = workaround).=0A= ;; 2009/01/13 dadams=0A= ;; Added: 1on1-completions-frame-zoom-font-difference.=0A= ;; Use in 1on1-display-*Completions*-frame.=0A= ;; 2009/01/01 dadams=0A= ;; 1on1-emacs: Removed assignment to pop-up-frame-alist.=0A= ;; 2008/09/08 dadams=0A= ;; y-or-n-p: 1on1-color-minibuffer-frame-on-setup only if at = top-level.=0A= ;; 2007/12/05 dadams=0A= ;; 1on1-minibuffer-frame-left: Added :type.=0A= ;; 1on1-color-mode-line-flag, 1on1-minibuffer-frame-flag: defvar -> = defcustom.=0A= ;; 1on1-(minibuffer|(special-)default)-frame-*: Removed * doc-string = prefix.=0A= ;; 2007/11/22 dadams=0A= ;; Added: 1on1-reset-minibuffer-frame, 1on1-fit-minibuffer-frame,=0A= ;; 1on1-minibuffer-prompt-end. Recommend C-o key binding.=0A= ;; Use 1on1-reset-minibuffer-frame on minibuffer-exit-hook.=0A= ;; 2007/08/14 dadams=0A= ;; 1on1-emacs:=0A= ;; Add *Completions* to special-display-buffer-names even if=0A= ;; 1on1-*Completions*-frame-flag is nil, so minibuffer gets = focus.=0A= ;; Set w(in)32-grab-focus-on-raise to nil.=0A= ;; 1on1-display-*Completions*-frame:=0A= ;; Don't change mouse pointer unless 1on1-*Completions*-frame-flag.=0A= ;; 1on1-minibuffer-frame-background: Use std minibuffer-frame-alist = bg, if defined.=0A= ;; 2007/05/28 dadams=0A= ;; 1on1-display-*Completions*-frame:=0A= ;; Wrap zoom-frm-out in condition-case (hack for Emacs 23 problem = changing size).=0A= ;; 2007/03/10 dadams=0A= ;; Added: 1on1-completions-frame-width. Use it in 1on1-emacs.=0A= ;; 2007/02/08 dadams=0A= ;; Removed: ^L-appearance-vector.=0A= ;; 1on1-emacs: No longer change ^L appearance - use my library = pp-c-l.el to do that.=0A= ;; 2007/02/04 dadams=0A= ;; 1on1-emacs:=0A= ;; Initialize standard-display-table if nil (default is nil!). = Thx to FidelSalas.=0A= ;; 2006/12/27 dadams=0A= ;; 1on1-change-cursor-on-input-method: Respect = 1on1-change-cursor-on-input-method-flag=0A= ;; 2006/12/12 dadams=0A= ;; Added: 1on1-^L-appearance-vector.=0A= ;; 1on1-emacs: Use 1on1-^L-appearance-vector to set ^L appearance.=0A= ;; 2006/12/11 dadams=0A= ;; 1on1-set-minibuffer-frame-top/bottom: 2 chars up, not 1, to fit = Emacs 22 better.=0A= ;; 2006/10/28 dadams=0A= ;; 1on1-(in)active-minibuffer-frame-background,=0A= ;; 1on1-isearch-minibuffer-frame-background, = 1on1-(in)active-mode-line-background,=0A= ;; 1on1-(help|completions)-frame-background,=0A= ;; 1on1-(help|completions)-frame-mouse+cursor-color,=0A= ;; 1on1-default-frame-cursor-color(-input-method):=0A= ;; Changed :type to 'color for Emacs 21+.=0A= ;; 2006/09/14 dadams=0A= ;; Removed mode-line position enhancements - use new library = modeline-posn.el.=0A= ;; Removed: 1on1-color-mode-line-column-flag, = 1on1-mode-line-column-limit.=0A= ;; 2006/09/04 dadams=0A= ;; 1on1-box-cursor-when-idle-timer: Cancel beforehand, and cancel = after defining.=0A= ;; 1on1-toggle-box-cursor-when-idle:=0A= ;; Use 1on1-box-cursor-when-idle-off on pre-command-hook.=0A= ;; Don't read an event; just turn it on.=0A= ;; Added: 1on1-box-cursor-when-idle-off.=0A= ;; 2006/09/02 dadams=0A= ;; 1on1-toggle-box-cursor-when-idle: Corrected.=0A= ;; 2006/08/27 dadams=0A= ;; Added: 1on1-box-cursor-when-idle(-p|-interval|-timer), = 1on1-last-cursor-type,=0A= ;; (1on1-)toggle-box-cursor-when-idle, = 1on1-set-box-cursor-when-idle-interval.=0A= ;; 2006/08/13 dadams=0A= ;; defalias set-cursor-type to 1on1-set-cursor-type.=0A= ;; 2006/07/25 dadams=0A= ;; Added: 1on1-minibuffer-frame-left. Use in = 1on1-minibuffer-frame-alist.=0A= ;; 2006/03/31 dadams=0A= ;; 1on1-default-frame-alist:=0A= ;; Changed (left|right)-fringe code, to reflect Emacs 22 change.=0A= ;; 2006/03/17 dadams=0A= ;; Renamed:=0A= ;; 1on1-color-active-minibuffer-frame to = 1on1-color-minibuffer-frame-on-setup,=0A= ;; 1on1-color-inactive-minibuffer-frame to = 1on1-color-minibuffer-frame-on-exit.=0A= ;; 1on1-color-minibuffer-frame-on-setup:=0A= ;; Redefined so hue depends on minibuffer-depth.=0A= ;; 2006/03/14 dadams=0A= ;; 1on1-color-(in)active-minibuffer-frame: Change hue for each = minibuffer recursion.=0A= ;; Added: 1on1-increment-color-hue.=0A= ;; Require hexrgb.el=0A= ;; 2006/03/13 dadams=0A= ;; 1on1-color-inactive-minibuffer-frame:=0A= ;; Change color only when not in recursive minibuffer.=0A= ;; abort-recursive-edit: Change minibuffer color after, not before, = abort.=0A= ;; 2006/01/07 dadams=0A= ;; Added :link=0A= ;; 2005/12/14 dadams=0A= ;; Added: 1on1-*Completions*-frame-at-right-flag.=0A= ;; Use in 1on1-display-*Completions*-frame.=0A= ;; 2005/11/28 dadams=0A= ;; Added: 1on1-change-cursor-on-overwrite-flag,=0A= ;; 1on1-change-cursor-on-input-method-flag, = 1on1-default-frame-cursor-type,=0A= ;; 1on1-default-frame-cursor-type-overwrite, = 1on1-default-frame-cursor-color,=0A= ;; 1on1-default-frame-cursor-color-input-mode, = 1on1-change-cursor-on-overwrite,=0A= ;; 1on1-change-cursor-on-insert-mode, 1on1-set-cursor-type = (thanks to=0A= ;; Juri Linkov for the last three).=0A= ;; 1on1-emacs: Use 1on1-change-cursor-* in post-command-hook.=0A= ;; 1on1-mode-line-column-limit: Corrected custom group.=0A= ;; 2005/11/22 dadams=0A= ;; Added: 1on1-setup-mode-line, 1on1-mode-line-column-limit,=0A= ;; 1on1-color-mode-line(-column)-flag, = 1on1-(in)active-mode-line-background.=0A= ;; 2005/10/28 dadams=0A= ;; 1on1-display-*Completions*-frame: Zoom to smaller font.=0A= ;; 2005/07/31 dadams=0A= ;; 1on1-emacs: Do not set initial-frame-alist to default-frame-alist = (D. Reitter).=0A= ;; 2005/07/25 dadams=0A= ;; Added :prefix to defgroup.=0A= ;; 2005/07/17 dadams=0A= ;; Switched default colors for = 1on1-(in)active-minibuffer-frame-background,=0A= ;; so active is the brighter color. Change inactive to LightBlue.=0A= ;; 2005/06/01 dadams=0A= ;; Corrected typo that gave minibuffer frame a vertical scroll bar.=0A= ;; 2005/05/29 dadams=0A= ;; *-alist: Use values from standard alist variables, if available = (that is,=0A= ;; don't override user settings.)=0A= ;; 2005/05/28 dadams=0A= ;; Renamed: 1on1-separate-minibuffer-frame-flag -> = 1on1-minibuffer-frame-flag,=0A= ;; 1on1-separate-*Help*-frame-flag -> 1on1-*Help*-frame-flag,=0A= ;; 1on1-separate-*Completions*-frame-flag -> = 1on1-*Completions*-frame-flag.=0A= ;; Added: setup-minibuffer-frame-coloring.=0A= ;; Added info in doc strings about use of each variable = (restart/1on1-emacs).=0A= ;; Corrected 1on1-minibuffer-frame-alist and = 1on1-special-display-frame-alist=0A= ;; for menu-bar-lines (nil).=0A= ;; 1on1-set-minibuffer-frame-top/bottom: Rewrote with = modify-frame-parameters.=0A= ;; 1on1-emacs:=0A= ;; Make sensitive to any changes to = 1on1-*[Help|Completions]*-frame-flag.=0A= ;; Move defcustom's, defvar's, and defun's outside 1on1-emacs.=0A= ;; If 1on1-minibuffer-frame already exists, just modify it.=0A= ;; Don't step on other parameters in standard alists; just append = new values.=0A= ;; 2005/05/23 dadams=0A= ;; Changed some individual frame-parameter variables from defcustom = to defvar.=0A= ;; Left them as user options, however, so you can change them with=0A= ;; set-variable before loading oneonone.el.=0A= ;; Renamed:=0A= ;; 1on1-upper-left-frame-corner-default ->=0A= ;; 1on1-default-frame-upper-left-corner=0A= ;; 1on1-default-special-display-frame-size ->=0A= ;; 1on1-default-special-frame-size=0A= ;; 1on1-upper-left-special-display-frame-corner-default ->=0A= ;; 1on1-default-special-frame-upper-left-corner=0A= ;; Split 1on1-menu-bar-lines into: = 1on1-default-special-frame-menu-bar-lines,=0A= ;; 1on1-default-frame-menu-bar-lines=0A= ;; 2005/05/18 dadams=0A= ;; Fixed typo: "oneoneone" -> "oneonone".=0A= ;; 2005/05/17 dadams=0A= ;; Updated to work with Emacs 22.x.=0A= ;; 2005/05/09 dadams=0A= ;; Major reorganization/rewrite. Created, from previous version = setup-frames.el.=0A= ;; Added prefix "1on1-".=0A= ;; Encapsulated stuff in new command 1on1-emacs.=0A= ;; 2005/01/29 dadams=0A= ;; 1on1-default-frame-font: Fixed bug - misplaced parens, so no good = if not Windows.=0A= ;; 2005/01/19 dadams=0A= ;; Use defcustom now.=0A= ;; Removed (put ... 'variable-interactive...).=0A= ;; 1on1-minibuffer-frame-top/bottom: Must be an integer (for = set-frame-position).=0A= ;; 2004/12/18 dadams=0A= ;; Bind after-make-frame-functions to nil when create = 1on1-minibuffer-frame.=0A= ;; 2004/11/26 dadams=0A= ;; Removed ;;;###autoload's.=0A= ;; 2004/11/20 dadams=0A= ;; Refined to deal with Emacs 21 < 21.3.50 (soon to be 22.x)=0A= ;; 2004/10/01 dadams=0A= ;; Ensure loaded before compile.=0A= ;; No fringe.=0A= ;; Remove *info* and *Customiz.* buffers from `same-window-regexps'=0A= ;; 2004/09/21 dadams=0A= ;; Updated to work with Emacs 21 (and Emacs 20).=0A= ;; 2004/03/19 dadams=0A= ;; 1on1-minibuffer-frame-width -> 1on1-set-minibuffer-frame-width.=0A= ;; added 1on1-set-minibuffer-frame-top/bottom.=0A= ;; 2001/01/05 dadams=0A= ;; 1. 1on1-minibuffer-frame-width: Use 1on1-minibuffer-frame arg for = frame-char-width.=0A= ;; 2. Don't define width when initially set = 1on1-minibuffer-frame-alist. Instead,=0A= ;; use set-frame-width afterward, so 1on1-minibuffer-frame-width = uses correct=0A= ;; character size.=0A= ;; 2001/01/05 dadams=0A= ;; 1. These vars no longer user options (interactively changeable):=0A= ;; 1on1-completions-frame-background, = 1on1-completions-frame-mouse+cursor-color,=0A= ;; 1on1-help-frame-background, 1on1-help-frame-mouse+cursor-color,=0A= ;; 1on1-minibuffer-frame-cursor-color, 1on1-minibuffer-frame-font,=0A= ;; 1on1-minibuffer-frame-foreground, 1on1-minibuffer-frame-height,=0A= ;; 1on1-minibuffer-frame-mouse-color, = 1on1-minibuffer-frame-top/bottom,=0A= ;; 1on1-minibuffer-frame-width.=0A= ;; 2. Added: 1on1-minibuffer-frame-width (function),=0A= ;; 1on1-minibuffer-frame-width-percent (var).=0A= ;; 3. Changed var 1on1-minibuffer-frame-width to nil default (now = use *-percent).=0A= ;; 2000/09/27 dadams=0A= ;; 1. Added: 1on1-display-*Completions*-frame, = 1on1-display-*Help*-frame.=0A= ;; 2. *Help* & *Completions* frames not created here. Instead, use=0A= ;; special-display-buffer-names & display-*-frame fns to define = them.=0A= ;; 3. Added: top-level, abort-recursive-edit.=0A= ;; 1999/08/24 dadams=0A= ;; 1. Windows: win32-grab-focus-on-raise =3D nil.=0A= ;; 2. 1on1-default-frame-font different if Windows.=0A= ;; 3. Added: 1on1-separate-minibuffer-frame-flag, = 1on1-menu-bar-lines,=0A= ;; 1on1-upper-left-frame-corner-default, 1on1-default-frame-size,=0A= ;; 1on1-upper-left-special-display-frame-corner-default,=0A= ;; 1on1-default-special-display-frame-size, = 1on1-default-special-frame-foreground,=0A= ;; 1on1-default-special-frame-background, = 1on1-default-special-frame-font,=0A= ;; 1on1-default-special-frame-mouse-color, = 1on1-default-special-frame-cursor-color.=0A= ;; 4. Use new vars to define default-frame-alist, = special-display-frame-alist.=0A= ;; 5. Only create built-in frames if = 1on1-separate-minibuffer-frame-flag.=0A= ;; 6. Protected refs to x-* vars.=0A= ;;=0A= ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=0A= ;;=0A= ;; This program is free software; you can redistribute it and/or modify=0A= ;; it under the terms of the GNU General Public License as published by=0A= ;; the Free Software Foundation; either version 2, or (at your option)=0A= ;; any later version.=0A= =0A= ;; This program is distributed in the hope that it will be useful,=0A= ;; but WITHOUT ANY WARRANTY; without even the implied warranty of=0A= ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the=0A= ;; GNU General Public License for more details.=0A= =0A= ;; You should have received a copy of the GNU General Public License=0A= ;; along with this program; see the file COPYING. If not, write to=0A= ;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth=0A= ;; Floor, Boston, MA 02110-1301, USA.=0A= ;;=0A= ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=0A= ;;=0A= ;;; Code:=0A= =0A= (eval-and-compile (require 'cl)) ;; remove-if (plus, for Emacs < 20, = when, unless)=0A= =0A= (require 'frame-cmds nil t) ;; (no error if not found): rename-frame=0A= (require 'zoom-frm nil t) ;; (no error if not found):=0A= ;; frame-zoom-font-difference, zoom-frm-out=0A= (require 'hexrgb) ;; hexrgb-color-values-to-hex, hexrgb-hsv-to-rgb, = hexrgb-rgb-to-hsv=0A= =0A= =0A= ;; Ensure that this is loaded before compiling it.=0A= (provide 'oneonone)=0A= (require 'oneonone)=0A= =0A= =0A= ;; To quiet the byte compiler=0A= (unless (> emacs-major-version 21)=0A= (defvar x-pointer-box-spiral)=0A= (defvar x-pointer-xterm))=0A= =0A= ;;;;;;;;;;;;;;;;;;;;;;;;=0A= =0A= =0A= ;;;###autoload=0A= (defgroup One-On-One nil=0A= "Options to define initial frame configuration."=0A= :prefix "1on1-" :group 'frames=0A= :link `(url-link :tag "Send Bug Report"=0A= ,(concat "mailto:" "drew.adams" "@" "oracle" ".com?subject=3D\=0A= oneonone.el bug: \=0A= &body=3DDescribe bug here, starting with `emacs -q'. \=0A= Don't forget to mention your Emacs and library versions."))=0A= :link '(url-link :tag "Other Libraries by Drew"=0A= "http://www.emacswiki.org/cgi-bin/wiki/DrewsElispLibraries")=0A= :link '(url-link :tag "Download" = "http://www.emacswiki.org/cgi-bin/wiki/oneonone.el")=0A= :link '(url-link :tag "Description"=0A= "http://www.emacswiki.org/cgi-bin/wiki/OneOnOneEmacs")=0A= :link '(emacs-commentary-link :tag "Commentary" "oneonone")=0A= )=0A= =0C=0A= =0A= =0A= ;;; Minibuffer frame: ********************************=0A= ;;;=0A= (defvar 1on1-minibuffer-frame nil=0A= "Minibuffer-only frame used by One-on-One Emacs.=0A= Note: This is not used if `1on1-minibuffer-frame-flag' is nil.")=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-minibuffer-frame-flag t=0A= "*Non-nil means use a separate, specialized frame for the minibuffer.=0A= Note that a non-nil value for this option also causes option=0A= `pop-up-frames' to be set to `t'. That is, it causes `display-buffer'=0A= to generally use a separate frame.=0A= =0A= If you change this variable, you will need to restart Emacs for it to=0A= take effect."=0A= :type 'boolean :group 'One-On-One)=0A= =0A= (defvar 1on1-minibuffer-frame-foreground "Red"=0A= "Default foreground color for the minibuffer frame.=0A= =0A= Note: This is not used if `1on1-minibuffer-frame-flag' is nil.=0A= =0A= This is used only to define the standard value of=0A= `1on1-minibuffer-frame-alist'. Customize that variable, not this one.=0A= If you change this variable, you will need to restart Emacs for it to=0A= take effect.")=0A= =0A= (defvar 1on1-minibuffer-frame-background=0A= (or (cdr (assq 'background-color minibuffer-frame-alist)) "LightBlue")=0A= "Initial color of the `1on1-minibuffer-frame' background.=0A= =0A= Note: This is not used if `1on1-minibuffer-frame-flag' is nil.=0A= =0A= This is used only to define the standard value of=0A= `1on1-minibuffer-frame-alist'. Customize that variable, not this one.=0A= If you change this variable, you will need to restart Emacs for it to=0A= take effect.")=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-active-minibuffer-frame-background "PaleGoldenrod"=0A= "*The color of the `1on1-minibuffer-frame' when it is active.=0A= =0A= Note: This is not used if `1on1-minibuffer-frame-flag' is nil."=0A= :type (if (>=3D emacs-major-version 21) 'color 'string) :group = 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-inactive-minibuffer-frame-background = 1on1-minibuffer-frame-background=0A= "*The color of the `1on1-minibuffer-frame' when it is inactive.=0A= =0A= Note: This is not used if `1on1-minibuffer-frame-flag' is nil."=0A= :type (if (>=3D emacs-major-version 21) 'color 'string) :group = 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-isearch-minibuffer-frame-background "bisque"=0A= "*Color of the `1on1-minibuffer-frame' when `isearch' is active.=0A= See `1on1-color-isearch-minibuffer-frame'.=0A= =0A= Note: This is not used if `1on1-minibuffer-frame-flag' is nil."=0A= :type (if (>=3D emacs-major-version 21) 'color 'string) :group = 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-color-mode-line-flag t=0A= "*Non-nil means use `1on1-(in)active-mode-line-background'.=0A= If you change this variable, you will need to restart Emacs for it to=0A= take effect."=0A= :type 'boolean :group 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-color-minibuffer-frame-on-exit-increment 5=0A= "*Increment to change minibuffer-frame hue when minibuffer is exited.=0A= This should be opposite in sign to=0A= `1on1-color-minibuffer-frame-on-setup-increment.'"=0A= :type 'integer :group 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-color-minibuffer-frame-on-setup-increment -10=0A= "*Increment to change minibuffer-frame hue when minibuffer is entered.=0A= This should be opposite in sign to=0A= `1on1-color-minibuffer-frame-on-exit-increment.'"=0A= :type 'integer :group 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-active-mode-line-background = 1on1-active-minibuffer-frame-background=0A= "*The color of the mode-line when it is active.=0A= Note: This is not used if `1on1-color-mode-line-flag' is nil."=0A= :type (if (>=3D emacs-major-version 21) 'color 'string) :group = 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-inactive-mode-line-background "LightGray"=0A= "*The color of the mode-line when it is inactive.=0A= Note: This is not used if `1on1-color-mode-line-flag' is nil."=0A= :type (if (>=3D emacs-major-version 21) 'color 'string) :group = 'One-On-One)=0A= =0A= (defvar 1on1-minibuffer-frame-font=0A= (if (eq system-type 'windows-nt)=0A= "-*-Lucida Console-normal-r-*-*-14-112-96-96-c-*-iso8859-1"=0A= ;;;;;;;"-*-Lucida Console-normal-r-*-*-15-*-*-*-c-*-*-ansi-"=0A= "-Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO8859-1")=0A= "Default font for the minibuffer frame.=0A= =0A= Note: This is not used if `1on1-minibuffer-frame-flag' is nil.=0A= =0A= This is used only to define the standard value of=0A= `1on1-minibuffer-frame-alist'. Customize that variable, not this one.=0A= If you change this variable, you will need to restart Emacs for it to=0A= take effect.")=0A= =0A= (defvar 1on1-minibuffer-frame-mouse-color "Black"=0A= "Default mouse color for the minibuffer frame.=0A= =0A= Note: This is not used if `1on1-minibuffer-frame-flag' is nil.=0A= =0A= This is used only to define the standard value of=0A= `1on1-minibuffer-frame-alist'. Customize that variable, not this one.=0A= If you change this variable, you will need to restart Emacs for it to=0A= take effect.")=0A= =0A= (defvar 1on1-minibuffer-frame-cursor-color "Black"=0A= "Default text cursor color for the minibuffer frame.=0A= =0A= Note: This is not used if `1on1-minibuffer-frame-flag' is nil.=0A= =0A= This is used only to define the standard value of=0A= `1on1-minibuffer-frame-alist'. Customize that variable, not this one.=0A= If you change this variable, you will need to restart Emacs for it to=0A= take effect.")=0A= =0A= (defvar 1on1-minibuffer-frame-height 2=0A= "Height of minibuffer frame, in characters.=0A= =0A= Note: This is not used if `1on1-minibuffer-frame-flag' is nil.=0A= =0A= This is used only to define the standard value of=0A= `1on1-minibuffer-frame-alist'. Customize that variable, not this one.=0A= If you change this variable, you will need to restart Emacs for it to=0A= take effect.")=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-minibuffer-frame-left 0=0A= "*Position of left edge of minibuffer frame, in pixels.=0A= An integer. If negative, then the position is that of the frame=0A= bottom relative to the screen right (not left) edge.=0A= =0A= See `default-frame-alist' for an explanation of frame parameters.=0A= =0A= Note: This is not used if `1on1-minibuffer-frame-flag' is nil.=0A= =0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= :type 'integer :group 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-minibuffer-frame-top/bottom nil=0A= "*Position of top (or bottom) of minibuffer frame, in pixels.=0A= If nil, function `1on1-set-minibuffer-frame-top/bottom' will position=0A= minibuffer at bottom of display.=0A= =0A= An integer. If negative, then the position is that of the frame=0A= bottom relative to the screen bottom.=0A= =0A= See `default-frame-alist' for an explanation of frame parameters.=0A= =0A= Note: This is not used if `1on1-minibuffer-frame-flag' is nil.=0A= =0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= :type '(choice (const :tag "Use function = `1on1-set-minibuffer-frame-top/bottom'" nil)=0A= (integer :tag "Pixels from top (>=3D 0) or bottom (< = 0)" :value 0))=0A= :group 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-minibuffer-frame-width nil=0A= "*Width, in characters, for minibuffer frame.=0A= If nil, then function `1on1-set-minibuffer-frame-width' is used instead.=0A= =0A= Note: This is not used if `1on1-minibuffer-frame-flag' is nil.=0A= =0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= :type '(choice (const :tag "Use function = `1on1-set-minibuffer-frame-width'" nil)=0A= (integer :tag "Width, in characters, for minibuffer = frame" :value 0))=0A= :group 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-minibuffer-frame-width-percent 100=0A= "*Max percent of the total display width to give to minibuffer frame.=0A= See function `1on1-set-minibuffer-frame-width'.=0A= =0A= Note: This is not used if `1on1-minibuffer-frame-flag' is nil.=0A= =0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= :type 'integer :group 'One-On-One)=0A= =0A= ;; Use values from the standard list, when available. However, we have = no way of=0A= ;; distinguishing values predefined in vanilla Emacs from user settings.=0A= ;;;###autoload=0A= (defcustom 1on1-minibuffer-frame-alist=0A= (list=0A= (or (assq 'foreground-color minibuffer-frame-alist)=0A= (cons 'foreground-color 1on1-minibuffer-frame-foreground))=0A= (or (assq 'background-color minibuffer-frame-alist)=0A= (cons 'background-color 1on1-minibuffer-frame-background))=0A= (or (assq 'font minibuffer-frame-alist)=0A= (cons 'font 1on1-minibuffer-frame-font))=0A= (or (assq 'mouse-color minibuffer-frame-alist)=0A= (cons 'mouse-color 1on1-minibuffer-frame-mouse-color))=0A= (or (assq 'cursor-color minibuffer-frame-alist)=0A= (cons 'cursor-color 1on1-minibuffer-frame-cursor-color))=0A= (or (assq 'menu-bar-lines minibuffer-frame-alist)=0A= (cons 'menu-bar-lines 0))=0A= (or (assq 'left minibuffer-frame-alist)=0A= (cons 'left 1on1-minibuffer-frame-left))=0A= (or (assq 'height minibuffer-frame-alist)=0A= (cons 'height 1on1-minibuffer-frame-height))=0A= (or (assq 'icon-type minibuffer-frame-alist)=0A= (cons 'icon-type (< emacs-major-version 21))) ; `t' for Emacs 21 = too?=0A= (or (assq 'minibuffer minibuffer-frame-alist)=0A= (cons 'minibuffer 'only))=0A= (or (assq 'user-position minibuffer-frame-alist)=0A= (cons 'user-position t))=0A= (or (assq 'vertical-scroll-bars minibuffer-frame-alist) ; No scroll = bar.=0A= (cons 'vertical-scroll-bars nil))=0A= (or (assq 'name minibuffer-frame-alist)=0A= (cons 'name "Emacs Minibuffer")))=0A= "*Frame-parameter alist for the standalone minibuffer frame=0A= `1on1-minibuffer-frame'.=0A= =0A= Note: This is not used if `1on1-minibuffer-frame-flag' is nil.=0A= =0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= ;; If we didn't need Emacs 20 compatibility, this could be:=0A= ;; :type '(alist :key-type symbol :value-type sexp)=0A= :type '(repeat (cons :format "%v" (symbol :tag "Frame Parameter") = (sexp :tag "Value")))=0A= :group 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-fit-minibuffer-frame-flag t=0A= "*Non-nil means adjust `1on1-minibuffer-frame' height to fit content.=0A= This is done after each command or user event (e.g. each key press)=0A= when the minibuffer is active.=0A= This option has no effect if `1on1-minibuffer-frame-flag' is nil."=0A= :type 'boolean :group 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-fit-minibuffer-frame-max-height nil=0A= "*Maximum height, in lines, that `fit-frame' gives to = `1on1-minibuffer-frame'.=0A= If nil, then function `fit-frame-max-height' is used instead,=0A= respecting `1on1-fit-minibuffer-frame-max-height-percent'.=0A= This has no effect if you do not use library `fit-frame.el'."=0A= :type '(choice=0A= (const :tag "Use = `1on1-fit-minibuffer-frame-max-height-percent'" nil)=0A= integer)=0A= :group 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-fit-minibuffer-frame-max-height-percent 10=0A= "*Max percent that `fit-frame' gives to `1on1-minibuffer-frame'.=0A= This is a percentage of the display height.=0A= Not used unless `1on1-fit-minibuffer-frame-max-height' is nil.=0A= This has no effect if you do not use library `fit-frame.el'."=0A= :type 'integer :group 'One-On-One)=0A= =0C=0A= =0A= =0A= ;;; *Help* frame: ********************************=0A= ;;; Display of *Help* buffer in custom frame.=0A= ;;; Background, height, cursor and pointer colors.=0A= ;;;=0A= ;;;###autoload=0A= (defcustom 1on1-*Help*-frame-flag t=0A= "*Non-nil means use a special appearance for the *Help* frame.=0A= =0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= :type 'boolean :group 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-help-frame-background "Thistle"=0A= "*Default background color for the *Help* buffer's frame.=0A= =0A= Note: This is not used if `1on1-*Help*-frame-flag' is nil.=0A= =0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= :type (if (>=3D emacs-major-version 21) 'color 'string) :group = 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-help-frame-mouse+cursor-color "Blue Violet"=0A= "*Default color for cursor & pointer of *Help* frame.=0A= =0A= Note: This is not used if `1on1-*Help*-frame-flag' is nil.=0A= =0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= :type (if (>=3D emacs-major-version 21) 'color 'string) :group = 'One-On-One)=0A= =0C=0A= =0A= =0A= ;;; *Completions* frame: ********************************=0A= ;;; Display of *Completion* buffer in custom frame.=0A= ;;; Background, height, cursor and pointer colors.=0A= ;;;=0A= ;;;###autoload=0A= (defcustom 1on1-*Completions*-frame-flag t=0A= "*Non-nil means use a special appearance for the *Completions* frame.=0A= =0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= :type 'boolean :group 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-*Completions*-frame-at-right-flag nil=0A= "*Non-nil means place *Completions* frame at right edge of display.=0A= This can be useful to make *Completions* more visible.=0A= This has no effect if `1on1-*Completions*-frame-flag' is nil."=0A= :type 'boolean :group 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-completions-frame-background "LavenderBlush2"=0A= "*Default background color for the *Completions* buffer's frame.=0A= =0A= Note: This is not used if `1on1-*Completions*-frame-flag' is nil.=0A= =0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= :type (if (>=3D emacs-major-version 21) 'color 'string) :group = 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-completions-frame-mouse+cursor-color "VioletRed"=0A= "*Default color for cursor & pointer of *Completions* frame.=0A= =0A= Note: This is not used if `1on1-*Completions*-frame-flag' is nil.=0A= =0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= :type (if (>=3D emacs-major-version 21) 'color 'string) :group = 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-completions-frame-width 100=0A= "*Width, in characters, for *Completions* frame.=0A= If this is nil, then the pertinent default frame width is used.=0A= =0A= Note: This is not used if `1on1-*Completions*-frame-flag' is nil.=0A= =0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= :type 'integer :group 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-completions-frame-zoom-font-difference=0A= (or (and (require 'zoom-frm 'nil t) (* 2 frame-zoom-font-difference))=0A= 2)=0A= "*Number of points to reduce the *Completions* frame font size.=0A= This must be less than the current default font size, since the new=0A= font size cannot be less than 1 point.=0A= A value of zero or nil means the *Completions* frame is not zoomed."=0A= :type '(restricted-sexp :match-alternatives (integerp null)) :group = 'One-On-One)=0A= =0C=0A= =0A= =0A= ;;; Default for normal frames: `1on1-default-frame-alist' = **************************=0A= ;;;=0A= (defvar 1on1-default-frame-foreground "Black"=0A= "Default foreground color for non-special frames.=0A= This is used only to define the standard value of=0A= `1on1-default-frame-alist'. Customize that variable, not this one.=0A= If you change this variable, you will need to restart Emacs for it to=0A= take effect.")=0A= =0A= (defvar 1on1-default-frame-background "LightBlue"=0A= "Default background color for non-special frames.=0A= This is used only to define the standard value of=0A= `1on1-default-frame-alist'. Customize that variable, not this one.=0A= If you change this variable, you will need to restart Emacs for it to=0A= take effect.")=0A= =0A= (defvar 1on1-default-frame-font=0A= (if (eq system-type 'windows-nt)=0A= "-*-Lucida Console-normal-r-*-*-14-112-96-96-c-*-iso8859-1"=0A= ;;;;;;"-*-Lucida Console-normal-r-*-*-15-*-*-*-c-*-*-ansi-"=0A= "-Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO8859-1")=0A= "Default font for non-special frames.=0A= This is used only to define the standard value of=0A= `1on1-default-frame-alist'. Customize that variable, not this one.=0A= If you change this variable, you will need to restart Emacs for it to=0A= take effect.")=0A= =0A= (defvar 1on1-default-frame-mouse-color "Red"=0A= "Default mouse-pointer color for non-special frames.=0A= This is used only to define the standard value of=0A= `1on1-default-frame-alist'. Customize that variable, not this one.=0A= If you change this variable, you will need to restart Emacs for it to=0A= take effect.")=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-change-cursor-on-input-method-flag t=0A= "*Non-nil means to use a different cursor when using an input method.=0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= :type 'boolean :group 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-default-frame-cursor-color "Red"=0A= "*Default text cursor color for non-special frames.=0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect. Furthermore, if=0A= `1on1-change-cursor-on-input-method-flag' is nil when you rerun=0A= `1on1-emacs', you will need to toggle that variable to non-nil (and=0A= back to nil, if that's the value you want). Otherwise, the new value=0A= will take effect only after you restart Emacs."=0A= :type (if (>=3D emacs-major-version 21) 'color 'string) :group = 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-default-frame-cursor-color-input-method "Orange"=0A= "*Default cursor color for non-special frames if using an input method.=0A= This has no effect if `1on1-change-cursor-on-input-method-flag' is nil.=0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= :type (if (>=3D emacs-major-version 21) 'color 'string) :group = 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-change-cursor-on-overwrite/read-only-flag t=0A= "*Non-nil means use a different cursor when overwrite mode or = read-only.=0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= :type 'boolean :group 'One-On-One)=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-default-frame-cursor-type 'bar=0A= "*Default text cursor type for non-special frames.=0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect. Furthermore, if=0A= `1on1-change-cursor-on-overwrite/read-only-flag' is nil when you rerun=0A= `1on1-emacs', you will need to toggle that variable to non-nil (and=0A= back to nil, if that's the value you want). Otherwise, the new value=0A= will take effect only after you restart Emacs."=0A= :type 'symbol :group 'One-On-One)=0A= =0A= (defvar 1on1-last-cursor-type 1on1-default-frame-cursor-type "Saved last = cursor type.")=0A= =0A= ;;;###autoload=0A= (defcustom 1on1-default-frame-cursor-type-overwrite/read-only 'box=0A= "*Default text cursor type for overwrite mode or read-only buffer.=0A= This applies only to non-special frames. This has no effect if=0A= `1on1-change-cursor-on-overwrite/read-only-flag' is nil. If you=0A= customize this variable, you will need to rerun `1on1-emacs' for the=0A= new value to take effect."=0A= :type 'symbol :group 'One-On-One)=0A= =0A= (defvar 1on1-box-cursor-when-idle-p t=0A= "Non-nil means to use a box cursor whenever Emacs is idle.=0A= Do NOT change this yourself; instead, use = `\\[toggle-box-cursor-when-idle]'.")=0A= =0A= (defvar 1on1-box-cursor-when-idle-interval 2=0A= "Number of seconds to wait before changing cursor type to box.=0A= Do NOT change this yourself to change the wait period; instead, use=0A= `\\[1on1-set-box-cursor-when-idle-interval]'.")=0A= =0A= (defvar 1on1-box-cursor-when-idle-timer=0A= (progn ; Cancel to prevent duplication.=0A= (when (boundp '1on1-box-cursor-when-idle-timer)=0A= (cancel-timer 1on1-box-cursor-when-idle-timer))=0A= (run-with-idle-timer 1on1-box-cursor-when-idle-interval t = '1on1-box-cursor-when-idle))=0A= "Timer used to change the cursor to a box cursor when Emacs is idle.")=0A= =0A= ;; Turn it off, by default. You must use `toggle-box-cursor-when-idle' = to turn it on.=0A= (cancel-timer 1on1-box-cursor-when-idle-timer)=0A= =0A= (defvar 1on1-default-frame-menu-bar-lines 1=0A= "Number of lines used for the menu bar in non-special frames.=0A= This is used only to define the standard value of=0A= `1on1-default-frame-alist'. Customize that variable, not this one.=0A= If you change this variable, you will need to restart Emacs for it to=0A= take effect.")=0A= =0A= (defvar 1on1-default-frame-upper-left-corner '(0 . 0)=0A= "Position of upper left frame corner.=0A= A cons whose car is the distance from the top in pixels=0A= and whose cdr is the distance from the left in pixels.=0A= =0A= This is used only to define the standard value of=0A= `1on1-default-frame-alist'. Customize that variable, not this one.=0A= If you change this variable, you will need to restart Emacs for it to=0A= take effect.")=0A= =0A= (defvar 1on1-default-frame-size '(80 . 35)=0A= "Default frame size.=0A= A cons whose car is the frame width in pixels=0A= and whose cdr is the frame height in pixels.=0A= =0A= This is used only to define the standard value of=0A= `1on1-default-frame-alist'. Customize that variable, not this one.=0A= If you change this variable, you will need to restart Emacs for it to=0A= take effect.")=0A= =0A= ;; Use values from the standard list, when available. However, we have = no way of=0A= ;; distinguishing values predefined in vanilla Emacs from user settings.=0A= ;;;###autoload=0A= (defcustom 1on1-default-frame-alist=0A= (list=0A= (or (assq 'foreground-color default-frame-alist)=0A= (cons 'foreground-color 1on1-default-frame-foreground))=0A= (or (assq 'background-color default-frame-alist)=0A= (cons 'background-color 1on1-default-frame-background))=0A= (or (assq 'font default-frame-alist)=0A= (cons 'font 1on1-default-frame-font))=0A= (or (assq 'mouse-color default-frame-alist)=0A= (cons 'mouse-color 1on1-default-frame-mouse-color))=0A= (or (assq 'cursor-color default-frame-alist)=0A= (cons 'cursor-color 1on1-default-frame-cursor-color))=0A= (or (assq 'cursor-type default-frame-alist)=0A= (cons 'cursor-type 1on1-default-frame-cursor-type))=0A= (or (assq 'menu-bar-lines default-frame-alist)=0A= (cons 'menu-bar-lines 1on1-default-frame-menu-bar-lines))=0A= (or (assq 'top default-frame-alist)=0A= (cons 'top (car 1on1-default-frame-upper-left-corner)))=0A= (or (assq 'left default-frame-alist)=0A= (cons 'left (cdr 1on1-default-frame-upper-left-corner)))=0A= (or (assq 'width default-frame-alist)=0A= (cons 'width (car 1on1-default-frame-size)))=0A= (or (assq 'height default-frame-alist)=0A= (cons 'height (cdr 1on1-default-frame-size)))=0A= (or (assq 'minibuffer default-frame-alist)=0A= (cons 'minibuffer (not 1on1-minibuffer-frame-flag)))=0A= (or (assq 'user-position default-frame-alist)=0A= (cons 'user-position t))=0A= (or (assq 'vertical-scroll-bars default-frame-alist)=0A= (cons 'vertical-scroll-bars 'right))=0A= (or (assq 'icon-type default-frame-alist)=0A= (cons 'icon-type (< emacs-major-version 21))) ; `t' for Emacs 21 = too?=0A= (or (assq 'tool-bar-lines default-frame-alist)=0A= (cons 'tool-bar-lines 1)) ; Emacs 21+=0A= (if (cdr (assq 'left-fringe default-frame-alist))=0A= (assq 'left-fringe default-frame-alist)=0A= (cons 'left-fringe 0)) ; Emacs 21+=0A= (if (cdr (assq 'right-fringe default-frame-alist))=0A= (assq 'right-fringe default-frame-alist)=0A= (cons 'right-fringe 0)) ; Emacs 21+=0A= (or (assq 'fringe default-frame-alist)=0A= (cons 'fringe 0))) ; Emacs 21, but not 21.3.50 - = REMOVE after 22.x=0A= "*Properties to be used for One-on-One Emacs `default-frame-alist'.=0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= ;; If we didn't need Emacs 20 compatibility, this could be:=0A= ;; :type '(alist :key-type symbol :value-type sexp)=0A= :type '(repeat (cons :format "%v" (symbol :tag "Frame Parameter") = (sexp :tag "Value")))=0A= :group 'One-On-One)=0A= =0C=0A= =0A= =0A= ;;; Special-display frames: `1on1-special-display-frame-alist' = ************************=0A= ;;;=0A= (defvar 1on1-default-special-frame-foreground "Black"=0A= "Default foreground color for special display frames.=0A= =0A= This is used only to define the standard value of=0A= `1on1-special-display-frame-alist'. Customize that variable, not this=0A= one. If you change this variable, you will need to restart Emacs for=0A= it to take effect.")=0A= =0A= (defvar 1on1-default-special-frame-background "LightSteelBlue"=0A= "Default background color for special display frames.=0A= =0A= This is used only to define the standard value of=0A= `1on1-special-display-frame-alist'. Customize that variable, not this=0A= one. If you change this variable, you will need to restart Emacs for=0A= it to take effect.")=0A= =0A= (defvar 1on1-default-special-frame-font=0A= (if (eq system-type 'windows-nt)=0A= "-*-Lucida Console-normal-r-*-*-14-112-96-96-c-*-iso8859-1"=0A= ;;;;;;;;"-*-Lucida Console-normal-r-*-*-15-*-*-*-c-*-*-ansi-"=0A= "-Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO8859-1")=0A= "Default font for special display frames.=0A= =0A= This is used only to define the standard value of=0A= `1on1-special-display-frame-alist'. Customize that variable, not this=0A= one. If you change this variable, you will need to restart Emacs for=0A= it to take effect.")=0A= =0A= (defvar 1on1-default-special-frame-mouse-color "Yellow"=0A= "Default mouse color for special display frames.=0A= =0A= This is used only to define the standard value of=0A= `1on1-special-display-frame-alist'. Customize that variable, not this=0A= one. If you change this variable, you will need to restart Emacs for=0A= it to take effect.")=0A= =0A= (defvar 1on1-default-special-frame-cursor-color "Yellow"=0A= "Default text cursor color for special display frames.=0A= =0A= This is used only to define the standard value of=0A= `1on1-special-display-frame-alist'. Customize that variable, not this=0A= one. If you change this variable, you will need to restart Emacs for=0A= it to take effect.")=0A= =0A= (defvar 1on1-default-special-frame-menu-bar-lines 1=0A= "Number of lines used for the menu bar of special display frames.=0A= =0A= This is used only to define the standard value of=0A= `1on1-special-display-frame-alist'. Customize that variable, not this=0A= one. If you change this variable, you will need to restart Emacs for=0A= it to take effect.")=0A= =0A= (defvar 1on1-default-special-frame-upper-left-corner '(0 . 0)=0A= "Position of upper left corner of special display frames.=0A= A cons whose car is the distance from the top in pixels=0A= and whose cdr is the distance from the left in pixels.=0A= =0A= This is used only to define the standard value of=0A= `1on1-special-display-frame-alist'. Customize that variable, not this=0A= one. If you change this variable, you will need to restart Emacs for=0A= it to take effect.")=0A= =0A= (defvar 1on1-default-special-frame-size '(80 . 20)=0A= "Default size of special display frames.=0A= A cons whose car is the frame width in pixels=0A= and whose cdr is the frame height in pixels.=0A= =0A= This is used only to define the standard value of=0A= `1on1-special-display-frame-alist'. Customize that variable, not this=0A= one. If you change this variable, you will need to restart Emacs for=0A= it to take effect.")=0A= =0A= ;; Use values from the standard list, when available. However, we have = no way of=0A= ;; distinguishing values predefined in vanilla Emacs from user settings.=0A= ;;;###autoload=0A= (defcustom 1on1-special-display-frame-alist=0A= (list=0A= (or (assq 'font special-display-frame-alist)=0A= (cons 'font 1on1-default-special-frame-font))=0A= (or (assq 'width special-display-frame-alist)=0A= (cons 'width (car 1on1-default-special-frame-size)))=0A= (or (assq 'height special-display-frame-alist)=0A= (cons 'height (cdr 1on1-default-special-frame-size)))=0A= (or (assq 'mouse-color special-display-frame-alist)=0A= (cons 'mouse-color 1on1-default-special-frame-mouse-color))=0A= (or (assq 'cursor-color special-display-frame-alist)=0A= (cons 'cursor-color 1on1-default-special-frame-cursor-color))=0A= (or (assq 'menu-bar-lines special-display-frame-alist)=0A= (cons 'menu-bar-lines 1on1-default-special-frame-menu-bar-lines))=0A= (or (assq 'foreground-color special-display-frame-alist)=0A= (cons 'foreground-color 1on1-default-special-frame-foreground))=0A= (or (assq 'background-color special-display-frame-alist)=0A= (cons 'background-color 1on1-default-special-frame-background))=0A= (or (assq 'top special-display-frame-alist)=0A= (cons 'top (car 1on1-default-special-frame-upper-left-corner)))=0A= (or (assq 'left special-display-frame-alist)=0A= (cons 'left (cdr 1on1-default-special-frame-upper-left-corner)))=0A= (or (assq 'unsplittable special-display-frame-alist)=0A= (cons 'unsplittable t))=0A= (or (assq 'user-position special-display-frame-alist)=0A= (cons 'user-position t))=0A= (or (assq 'vertical-scroll-bars special-display-frame-alist)=0A= (cons 'vertical-scroll-bars 'right)))=0A= "Properties to be used for One-on-One `special-display-frame-alist'.=0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= ;; If we didn't need Emacs 20 compatibility, this could be:=0A= ;; :type '(alist :key-type symbol :value-type sexp)=0A= :type '(repeat (cons :format "%v" (symbol :tag "Frame Parameter") = (sexp :tag "Value")))=0A= :group 'One-On-One)=0A= =0C=0A= =0A= =0A= ;;; Main command ***************************************=0A= ;;;=0A= ;;;###autoload=0A= (defun 1on1-emacs ()=0A= "One-on-One Emacs setup.=0A= Use `1on1-default-frame-alist' and `1on1-special-display-frame-alist'.=0A= =0A= If `1on1-minibuffer-frame-flag' is non-nil, then create=0A= minibuffer-only frame, `1on1-minibuffer-frame', using=0A= `1on1-minibuffer-frame-alist'.=0A= =0A= If `1on1-separate-minibuffer-*Help*-flag' is non-nil, then use=0A= special frame for *Help* buffer.=0A= =0A= If `1on1-separate-minibuffer-*Completions*-flag' is non-nil, then=0A= use special frame for *Completions* buffer."=0A= (interactive)=0A= (unless (if (fboundp 'display-graphic-p) (display-graphic-p) = window-system)=0A= (error "Use `1on1-emacs' only with a graphics display, not with a = text terminal"))=0A= (setq default-frame-alist (append 1on1-default-frame-alist = default-frame-alist)=0A= special-display-frame-alist (append = 1on1-special-display-frame-alist=0A= special-display-frame-alist))=0A= =0A= ;; *Help* frame=0A= (if 1on1-*Help*-frame-flag=0A= (add-to-list=0A= 'special-display-buffer-names=0A= (list "*Help*" '1on1-display-*Help*-frame=0A= (list (cons 'background-color 1on1-help-frame-background)=0A= (cons 'mouse-color 1on1-help-frame-mouse+cursor-color)=0A= (cons 'cursor-color = 1on1-help-frame-mouse+cursor-color)=0A= '(height . 40))))=0A= (setq special-display-buffer-names=0A= (remove-if (lambda (elt) (equal "*Help*" (car elt)))=0A= special-display-buffer-names)))=0A= =0A= ;; *Completions* frame=0A= ;; If `1on1-minibuffer-frame-flag' is non-nil, then *Completions* = frame must be treated=0A= ;; specially, so that it gets focus from the minibuffer frame. This = is so, even if=0A= ;; `1on1-*Completions*-frame-flag' is nil.=0A= (if 1on1-minibuffer-frame-flag=0A= (if 1on1-*Completions*-frame-flag=0A= (add-to-list=0A= 'special-display-buffer-names=0A= `("*Completions*" 1on1-display-*Completions*-frame=0A= ((background-color ,@1on1-completions-frame-background)=0A= (mouse-color = ,@1on1-completions-frame-mouse+cursor-color)=0A= (cursor-color = ,@1on1-completions-frame-mouse+cursor-color)=0A= (menu-bar-lines . 0) (tool-bar-lines . 0) ; No menu = bar or tool bar.=0A= ,@(and 1on1-completions-frame-width=0A= `((width ,@1on1-completions-frame-width))))))=0A= (add-to-list 'special-display-buffer-names=0A= `("*Completions*" = 1on1-display-*Completions*-frame)))=0A= (setq special-display-buffer-names=0A= (remove-if (lambda (elt) (equal "*Completions*" (car elt)))=0A= special-display-buffer-names)))=0A= =0A= ;; Minibuffer frame=0A= (when 1on1-minibuffer-frame-flag=0A= ;; `display-buffer' (& `*-other-window' fns) will use separate = frames.=0A= (setq pop-up-frames t)=0A= =0A= ;; Set up `1on1-minibuffer-frame'.=0A= (setq minibuffer-frame-alist (append 1on1-minibuffer-frame-alist=0A= minibuffer-frame-alist))=0A= (if 1on1-minibuffer-frame=0A= (modify-frame-parameters 1on1-minibuffer-frame = 1on1-minibuffer-frame-alist)=0A= (setq 1on1-minibuffer-frame=0A= (let ((after-make-frame-functions nil)) ; E.g. inhibit = `fit-frame'.=0A= (make-frame 1on1-minibuffer-frame-alist))))=0A= =0A= ;; Resize and reposition it. If variable = `1on1-minibuffer-frame-width'=0A= ;; or `1on1-minibuffer-frame-top/bottom' is nil, calculate = automatically.=0A= (1on1-set-minibuffer-frame-width)=0A= (1on1-set-minibuffer-frame-top/bottom)=0A= =0A= ;; Rename minibuffer frame. (`rename-frame' is defined in = `frame-cmds.el'.)=0A= (when (fboundp 'rename-frame)=0A= (rename-frame 1on1-minibuffer-frame "Emacs minibuffer = \=0A= show/hide: hold CTRL + click in window"))=0A= (setq minibuffer-auto-raise t)=0A= ;; Background colors of minibuffer frame: 3 states=0A= (add-hook 'isearch-mode-hook '1on1-color-isearch-minibuffer-frame)=0A= (add-hook 'isearch-mode-end-hook = '1on1-color-minibuffer-frame-on-exit)=0A= (add-hook 'minibuffer-setup-hook = '1on1-color-minibuffer-frame-on-setup)=0A= (add-hook 'minibuffer-exit-hook '1on1-color-minibuffer-frame-on-exit)=0A= ;; Redefine built-in fns so they color minibuffer frame.=0A= (1on1-setup-minibuffer-frame-coloring))=0A= =0A= ;; Hooks.=0A= (if (and 1on1-fit-minibuffer-frame-flag (require 'fit-frame nil t))=0A= (add-hook 'post-command-hook '1on1-fit-minibuffer-frame)=0A= (remove-hook 'post-command-hook '1on1-fit-minibuffer-frame))=0A= (if 1on1-change-cursor-on-overwrite/read-only-flag=0A= (add-hook 'post-command-hook = '1on1-change-cursor-on-overwrite/read-only)=0A= (1on1-set-cursor-type 1on1-default-frame-cursor-type)=0A= (remove-hook 'post-command-hook = '1on1-change-cursor-on-overwrite/read-only))=0A= (if 1on1-change-cursor-on-input-method-flag=0A= (add-hook 'post-command-hook '1on1-change-cursor-on-input-method)=0A= (setq current-input-method nil)=0A= (1on1-change-cursor-on-input-method)=0A= (remove-hook 'post-command-hook '1on1-change-cursor-on-input-method))=0A= (add-hook 'minibuffer-exit-hook '1on1-reset-minibuffer-frame)=0A= =0A= (setq w32-grab-focus-on-raise nil=0A= win32-grab-focus-on-raise nil) ; older name=0A= (1on1-setup-mode-line))=0A= =0A= ;; This is inspired by code from Juri Linkov .=0A= (defun 1on1-change-cursor-on-input-method ()=0A= "Set cursor type depending on whether an input method is used or not."=0A= (when 1on1-change-cursor-on-input-method-flag=0A= (set-cursor-color=0A= (if current-input-method=0A= 1on1-default-frame-cursor-color-input-method=0A= (let ((bufname (buffer-name (current-buffer))))=0A= (cond=0A= ((string=3D "*Help*" bufname) = 1on1-help-frame-mouse+cursor-color)=0A= ((string=3D "*Completions*" bufname) = 1on1-completions-frame-mouse+cursor-color)=0A= ((eq 1on1-minibuffer-frame (selected-frame))=0A= 1on1-minibuffer-frame-cursor-color)=0A= ((special-display-p bufname) = 1on1-default-special-frame-cursor-color)=0A= (t 1on1-default-frame-cursor-color)))))))=0A= =0A= ;; This is from Juri Linkov , with read-only added.=0A= (defun 1on1-change-cursor-on-overwrite/read-only ()=0A= "Set cursor type differently for overwrite mode and read-only buffer.=0A= That is, use one cursor type for overwrite mode and read-only buffers,=0A= and another cursor type otherwise."=0A= (1on1-set-cursor-type (if (or buffer-read-only overwrite-mode)=0A= = 1on1-default-frame-cursor-type-overwrite/read-only=0A= 1on1-default-frame-cursor-type)))=0A= =0A= (unless (fboundp 'set-cursor-type) (defalias 'set-cursor-type = '1on1-set-cursor-type))=0A= ;; This is essentially from Juri Linkov .=0A= ;;;###autoload=0A= (defun 1on1-set-cursor-type (cursor-type)=0A= "Set the cursor type of the selected frame to CURSOR-TYPE.=0A= When called interactively, prompt for the type to use.=0A= To get the frame's current cursor type, use `frame-parameters'."=0A= (interactive=0A= (list (intern (completing-read "Cursor type: "=0A= (mapcar 'list '("box" "hollow" "bar" = "hbar" nil))))))=0A= (modify-frame-parameters (selected-frame) (list (cons 'cursor-type = cursor-type))))=0A= =0A= (defun 1on1-box-cursor-when-idle ()=0A= "Change the cursor to a box cursor when Emacs is idle."=0A= (let ((type (cdr (assoc 'cursor-type (frame-parameters)))))=0A= (unless (eq type 'box)=0A= (setq 1on1-last-cursor-type type)=0A= (1on1-set-cursor-type 'box)))) =0A= =0A= (defun 1on1-box-cursor-when-idle-off ()=0A= "Turn off changing the cursor to a box cursor when Emacs is idle."=0A= (when 1on1-last-cursor-type (1on1-set-cursor-type = 1on1-last-cursor-type)))=0A= =0A= ;;;###autoload=0A= (defalias 'toggle-box-cursor-when-idle '1on1-toggle-box-cursor-when-idle)=0A= ;;;###autoload=0A= (defun 1on1-toggle-box-cursor-when-idle (&optional arg)=0A= "Turn on or off automatically changing to a box cursor when idle.=0A= When on, the cursor is changed to a box whenever Emacs is idle.=0A= With prefix argument, turn on if ARG > 0; else turn off."=0A= (interactive "P")=0A= (setq 1on1-box-cursor-when-idle-p=0A= (if arg (> (prefix-numeric-value arg) 0) (not = 1on1-box-cursor-when-idle-p)))=0A= (cond (1on1-box-cursor-when-idle-p=0A= (timer-activate-when-idle 1on1-box-cursor-when-idle-timer)=0A= (add-hook 'pre-command-hook '1on1-box-cursor-when-idle-off)=0A= (message "Turned ON making cursor a box when Emacs is idle."))=0A= (t=0A= (cancel-timer 1on1-box-cursor-when-idle-timer)=0A= (remove-hook 'pre-command-hook '1on1-box-cursor-when-idle-off)=0A= (message "Turned OFF making cursor a box when Emacs is = idle."))))=0A= =0A= ;;;###autoload=0A= (defun 1on1-set-box-cursor-when-idle-interval (secs)=0A= "Set wait until automatically change to a box cursor when Emacs is = idle.=0A= Whenever Emacs is idle for this many seconds it will change the cursor=0A= to a box.=0A= =0A= To turn on or off automatically changing to a box cursor when idle,=0A= use `\\[toggle-box-cursor-when-idle]."=0A= (interactive=0A= "nSeconds to idle, before changing to a box cursor: ")=0A= (timer-set-idle-time 1on1-box-cursor-when-idle-timer=0A= (setq 1on1-box-cursor-when-idle-interval secs)=0A= t))=0A= =0A= (defun 1on1-display-*Help*-frame (buf &optional args)=0A= "Display *Help* buffer in its own frame.=0A= `special-display-function' is used to do the actual displaying.=0A= BUF and ARGS are the arguments to `special-display-function'."=0A= (let ((old-ptr-shape (and (boundp 'x-pointer-shape) x-pointer-shape))=0A= return-window)=0A= (when (boundp 'x-pointer-xterm) (setq x-pointer-shape = x-pointer-xterm))=0A= (setq return-window (select-window (funcall special-display-function = buf args)))=0A= (raise-frame)=0A= (setq x-pointer-shape old-ptr-shape)=0A= return-window))=0A= =0A= (defun 1on1-display-*Completions*-frame (buf &optional args)=0A= "Display *Completions* buffer in its own frame.=0A= `special-display-function' is used to do the actual displaying.=0A= Completion input events are redirected to `1on1-minibuffer-frame'.=0A= BUF and ARGS are the arguments to `special-display-function'."=0A= (let ((old-ptr-shape (and (boundp 'x-pointer-shape) x-pointer-shape))=0A= return-window)=0A= (when (and 1on1-*Completions*-frame-flag (boundp = 'x-pointer-box-spiral))=0A= (setq x-pointer-shape x-pointer-box-spiral))=0A= (setq return-window (select-window (funcall special-display-function = buf args)))=0A= (when (and (fboundp 'zoom-frm-out) = 1on1-completions-frame-zoom-font-difference)=0A= (condition-case nil=0A= (let ((frame-zoom-font-difference = 1on1-completions-frame-zoom-font-difference))=0A= (zoom-frm-out)) ; In `zoom-frm.el'.=0A= (error nil)))=0A= =0A= ;; We reposition frame this way, instead of binding = `special-display-frame-alist'=0A= ;; with this value, because `after-make-frame-functions' might = resize frame.=0A= (when 1on1-*Completions*-frame-at-right-flag=0A= (modify-frame-parameters=0A= (selected-frame) ; Hard-code 7 here - what does = it depend on?=0A= `((left . ,(- (x-display-pixel-width) (+ (frame-pixel-width) = 7))))))=0A= (raise-frame)=0A= (when (boundp '1on1-minibuffer-frame)=0A= (redirect-frame-focus (selected-frame) 1on1-minibuffer-frame))=0A= (when (and 1on1-*Completions*-frame-flag (boundp = 'x-pointer-box-spiral))=0A= (setq x-pointer-shape old-ptr-shape))=0A= return-window))=0A= =0A= (defun 1on1-set-minibuffer-frame-top/bottom ()=0A= "Set position of minibuffer frame.=0A= Use `1on1-minibuffer-frame-top/bottom' if non-nil.=0A= Else, place minibuffer at bottom of display."=0A= (when (boundp '1on1-minibuffer-frame)=0A= (condition-case nil=0A= (if (fboundp 'redisplay) (redisplay t) (force-mode-line-update = t))=0A= (error nil)) ; Ignore errors from, e.g., = killed buffers.=0A= (modify-frame-parameters=0A= 1on1-minibuffer-frame=0A= `((top ,@ (or 1on1-minibuffer-frame-top/bottom=0A= (- (* 2 (frame-char-height 1on1-minibuffer-frame)))))))))=0A= =0A= (defun 1on1-set-minibuffer-frame-width ()=0A= "Set width of minibuffer frame, in characters.=0A= Use `1on1-minibuffer-frame-width' if not nil.=0A= Else, set width relative to character size of `1on1-minibuffer-frame'=0A= and display size, and depending on=0A= `1on1-minibuffer-frame-width-percent':=0A= =0A= (/ (* 1on1-minibuffer-frame-width-percent (x-display-pixel-width))=0A= (* 100 (frame-char-width 1on1-minibuffer-frame)))"=0A= (when (boundp '1on1-minibuffer-frame)=0A= (set-frame-width=0A= 1on1-minibuffer-frame=0A= (or 1on1-minibuffer-frame-width=0A= (/ (* 1on1-minibuffer-frame-width-percent = (x-display-pixel-width))=0A= (* 100 (frame-char-width 1on1-minibuffer-frame)))))))=0A= =0A= (defun 1on1-color-minibuffer-frame-on-setup ()=0A= "Change background of minibuffer frame to reflect the minibuffer depth.=0A= Use this when increasing the minibuffer recursion depth."=0A= (when (boundp '1on1-minibuffer-frame)=0A= (save-window-excursion=0A= (select-frame 1on1-minibuffer-frame)=0A= (set-background-color 1on1-active-minibuffer-frame-background)=0A= (let ((count (minibuffer-depth)))=0A= (while (> count 1)=0A= (set-background-color (1on1-increment-color-hue ; Change bg = hue slightly.=0A= (frame-parameter nil 'background-color)=0A= = 1on1-color-minibuffer-frame-on-setup-increment))=0A= (setq count (1- count)))))))=0A= =0A= (defun 1on1-color-minibuffer-frame-on-exit ()=0A= "Change background of minibuffer frame to reflect the minibuffer depth.=0A= Use this when reducing the minibuffer recursion depth."=0A= (when (boundp '1on1-minibuffer-frame)=0A= (save-window-excursion=0A= (select-frame 1on1-minibuffer-frame)=0A= (if (< (minibuffer-depth) 2)=0A= (set-background-color = 1on1-inactive-minibuffer-frame-background)=0A= (set-background-color (1on1-increment-color-hue ; Change bg hue = slightly.=0A= (frame-parameter nil 'background-color)=0A= = 1on1-color-minibuffer-frame-on-exit-increment))))))=0A= =0A= ;; This is essentially a version of `doremi-increment-color-component' = for hue only.=0A= (defun 1on1-increment-color-hue (color increment)=0A= "Increase hue component of COLOR by INCREMENT."=0A= (unless (string-match "#" color) ; Convert color name to #hhh...=0A= (setq color (hexrgb-color-values-to-hex (x-color-values color))))=0A= ;; Convert RGB to HSV=0A= (let* ((rgb (x-color-values color))=0A= (red (/ (float (nth 0 rgb)) 65535.0)) ; Convert from 0-65535 = to 0.0-1.0=0A= (green (/ (float (nth 1 rgb)) 65535.0))=0A= (blue (/ (float (nth 2 rgb)) 65535.0))=0A= (hsv (hexrgb-rgb-to-hsv red green blue))=0A= (hue (nth 0 hsv))=0A= (saturation (nth 1 hsv))=0A= (value (nth 2 hsv)))=0A= (setq hue (+ hue (/ increment 100.0)))=0A= (when (> hue 1.0) (setq hue (1- hue)))=0A= (hexrgb-color-values-to-hex (mapcar (lambda (x) (floor (* x = 65535.0)))=0A= (hexrgb-hsv-to-rgb hue = saturation value)))))=0A= =0A= (defun 1on1-color-isearch-minibuffer-frame ()=0A= "Use `1on1-isearch-minibuffer-frame-background' for minibuffer."=0A= (and (boundp '1on1-minibuffer-frame)=0A= (save-window-excursion=0A= (select-frame 1on1-minibuffer-frame)=0A= (set-background-color=0A= ;; Can also try `x-defined-colors', defined in `x-win.el'.=0A= ;; It contains all colors currently supported by X windows.=0A= (if (x-color-defined-p = 1on1-isearch-minibuffer-frame-background)=0A= 1on1-isearch-minibuffer-frame-background=0A= "white")))))=0A= =0A= (defun 1on1-flash-ding-minibuffer-frame (&optional do-not-terminate)=0A= "Ring bell (`ding'), after flashing minibuffer frame, if relevant.=0A= Terminates any keyboard macro executing, unless arg DO-NOT-TERMINATE = non-nil."=0A= (flash-ding do-not-terminate (and (boundp '1on1-minibuffer-frame)=0A= 1on1-minibuffer-frame)))=0A= =0A= (defun 1on1-setup-minibuffer-frame-coloring ()=0A= "Redefine some built-in functions so they color the minibuffer frame.=0A= Functions redefined: `y-or-n-p', `top-level', `abort-recursive-exit'."=0A= =0A= (or (fboundp 'old-y-or-n-p)=0A= (fset 'old-y-or-n-p (symbol-function 'y-or-n-p)))=0A= =0A= ;; REPLACES ORIGINAL (built-in function):=0A= ;; Temporarily colors minibuffer frame to "active" color if at = top-level.=0A= ;;=0A= (defun y-or-n-p (prompt)=0A= "Ask user a \"y or n\" question. Return t if answer is \"y\".=0A= Takes one argument, which is the string to display to ask the question.=0A= It should end in a space; `y-or-n-p' adds `(y or n) ' to it.=0A= No confirmation of answer is requested; a single character is enough.=0A= Also accepts SPC to mean yes, or DEL to mean no."=0A= (if (> (minibuffer-depth) 0)=0A= (old-y-or-n-p prompt) ; Don't do anything special if = in minibuffer.=0A= (1on1-color-minibuffer-frame-on-setup)=0A= (prog1 (old-y-or-n-p prompt)=0A= (1on1-color-minibuffer-frame-on-exit))))=0A= =0A= =0A= (or (fboundp 'old-top-level)=0A= (fset 'old-top-level (symbol-function 'top-level)))=0A= =0A= ;; REPLACES ORIGINAL (built-in function):=0A= ;; Resets color of minibuffer frame to "inactive" color.=0A= ;;=0A= (defun top-level ()=0A= "Exit all recursive editing levels."=0A= (interactive)=0A= (1on1-color-minibuffer-frame-on-exit)=0A= (old-top-level))=0A= =0A= =0A= (or (fboundp 'old-abort-recursive-edit)=0A= (fset 'old-abort-recursive-edit (symbol-function = 'abort-recursive-edit)))=0A= =0A= ;; REPLACES ORIGINAL (built-in function):=0A= ;; Resets color of minibuffer frame to "inactive" color.=0A= ;;=0A= (defun abort-recursive-edit ()=0A= "Abort command that requested this recursive edit or minibuffer = input."=0A= (interactive)=0A= (1on1-color-minibuffer-frame-on-exit)=0A= (old-abort-recursive-edit)))=0A= =0A= (defun 1on1-setup-mode-line ()=0A= "Set up mode-line faces."=0A= (when 1on1-color-mode-line-flag=0A= (set-face-background 'modeline 1on1-active-mode-line-background)=0A= (when (facep 'mode-line-inactive) ; Emacs 22=0A= (set-face-background 'mode-line-inactive = 1on1-inactive-mode-line-background))))=0A= =0A= (defun 1on1-reset-minibuffer-frame ()=0A= (when 1on1-minibuffer-frame=0A= (set-frame-size 1on1-minibuffer-frame=0A= (frame-width 1on1-minibuffer-frame)=0A= 1on1-minibuffer-frame-height)=0A= (1on1-set-minibuffer-frame-top/bottom)))=0A= =0A= ;;;###autoload=0A= (defun 1on1-fit-minibuffer-frame ()=0A= "Fit the standalone minibuffer frame height to its contents.=0A= Repeat to increase the height by 1.=0A= Bind this in minibuffer keymaps to a key such as `C-o' that you can=0A= use during minibuffer input.=0A= This has no effect if you do not also use library `fit-frame.el'."=0A= (interactive)=0A= (unless (require 'fit-frame nil t)=0A= (error "You need to load library `fit-frame.el' to use this = command"))=0A= ;; We could assume the minibuffer frame is `1on1-minibuffer-frame', = but we don't.=0A= (when (and 1on1-fit-minibuffer-frame-flag=0A= (active-minibuffer-window)=0A= (save-selected-window=0A= (select-window (minibuffer-window))=0A= ;; We should be able to use just (one-window-p),=0A= ;; but an Emacs bug means we need this:=0A= (one-window-p nil 'selected-frame)))=0A= (let* ((frame (save-selected-window=0A= (select-window (minibuffer-window)) = (selected-frame)))=0A= (frame-height (frame-height frame)))=0A= (cond=0A= ((eq last-command '1on1-fit-minibuffer-frame)=0A= (set-frame-height frame (1+ (frame-height frame)))=0A= (1on1-set-minibuffer-frame-top/bottom)=0A= (condition-case nil (scroll-down (frame-height frame)) (error = nil)))=0A= (t=0A= (let* ((beg = (1on1-minibuffer-prompt-end))=0A= (fit-frame-max-height=0A= 1on1-fit-minibuffer-frame-max-height)=0A= (fit-frame-max-height-percent=0A= 1on1-fit-minibuffer-frame-max-height-percent)=0A= (fit-frame-min-height = 1on1-minibuffer-frame-height)=0A= (window-min-height = 1on1-minibuffer-frame-height)=0A= (fit-frame-empty-height = 1on1-minibuffer-frame-height)=0A= (fit-frame-empty-special-display-height = 1on1-minibuffer-frame-height))=0A= (fit-frame frame (frame-width frame))=0A= ;; $$$$ (when (>=3D emacs-major-version 21)=0A= ;; (set-frame-height frame (1+ (frame-height frame)))) ; A = little extra.=0A= (1on1-set-minibuffer-frame-top/bottom)=0A= (condition-case nil (scroll-down (frame-height frame)) (error = nil))))))))=0A= =0A= (defun 1on1-minibuffer-prompt-end ()=0A= "Version of `minibuffer-prompt-end' that works for Emacs 20 and later."=0A= (if (fboundp 'minibuffer-prompt-end) (minibuffer-prompt-end) = (point-min)))=0A= =0A= ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=0A= ;;; oneonone.el ends here=0A= ------=_NextPart_000_0010_01CC2E52.E5002650-- From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 19 10:44:09 2011 Received: (at 8856) by debbugs.gnu.org; 19 Jun 2011 14:44:10 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYJEO-0003iJ-BJ for submit@debbugs.gnu.org; Sun, 19 Jun 2011 10:44:08 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYJEM-0003hj-D2 for 8856@debbugs.gnu.org; Sun, 19 Jun 2011 10:44:06 -0400 Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5JEhwxL027110 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 19 Jun 2011 14:44:00 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5JEhveR006358 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 19 Jun 2011 14:43:58 GMT Received: from abhmt012.oracle.com (abhmt012.oracle.com [141.146.116.21]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5JEhq9a030185; Sun, 19 Jun 2011 09:43:52 -0500 Received: from dradamslap1 (/10.159.51.106) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 19 Jun 2011 07:43:52 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at> <6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com> <4DFE09A7.10500@gmx.at> Subject: RE: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated Date: Sun, 19 Jun 2011 07:43:50 -0700 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <4DFE09A7.10500@gmx.at> Thread-Index: AcwujnT+64eaYlsvQm2UQjFq5UKHUAAAMX3A X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: acsinet22.oracle.com [141.146.126.238] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090204.4DFE0B30.010F:SCFMA922111,ss=1,re=-4.000,fgs=0 X-Spam-Score: -6.5 (------) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.5 (------) > There was a bug that caused `pop-up-frames' be processed before > `special-display-p'. I attach the latest version of window.el. > > Please try again. Will do. And I will try to pare down the two files a bit for reproducing this. But please at least try the simple recipe using those two files (likewise the recipe for bug #8851, using the same two files), to see if you can at least reproduce the problem on your platform. From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 19 13:26:58 2011 Received: (at 8856) by debbugs.gnu.org; 19 Jun 2011 17:26:58 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYLlx-0008Nj-QM for submit@debbugs.gnu.org; Sun, 19 Jun 2011 13:26:58 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYLlw-0008NX-C4 for 8856@debbugs.gnu.org; Sun, 19 Jun 2011 13:26:56 -0400 Received: from rtcsinet21.oracle.com (rtcsinet21.oracle.com [66.248.204.29]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5JHQlcm026327 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 19 Jun 2011 17:26:49 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by rtcsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5JHQjq5006669 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 19 Jun 2011 17:26:46 GMT Received: from abhmt009.oracle.com (abhmt009.oracle.com [141.146.116.18]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5JHQdVX028382; Sun, 19 Jun 2011 12:26:39 -0500 Received: from dradamslap1 (/10.159.51.106) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 19 Jun 2011 10:26:38 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at> Subject: RE: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated Date: Sun, 19 Jun 2011 10:26:39 -0700 Message-ID: <0137606B527A48C69E3D6C704C5C6595@us.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0020_01CC2E6B.61AAE5B0" X-Mailer: Microsoft Office Outlook 11 In-Reply-To: Thread-Index: AcwujnT+64eaYlsvQm2UQjFq5UKHUAAAMX3AAAUbTFA= X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: rtcsinet21.oracle.com [66.248.204.29] X-CT-RefId: str=0001.0A090206.4DFE315A.004B:SCFSTAT5015188, ss=1, re=-6.300, fgs=0 X-Spam-Score: -5.8 (-----) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -5.8 (-----) This is a multi-part message in MIME format. ------=_NextPart_000_0020_01CC2E6B.61AAE5B0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit I've pared down the code to load. Just load the attached and then follow the recipe: M-x f TAB ; to display *Completions* frame. C-] ; to return to top level. M-x f TAB o Or just hit TAB twice in a row: M-x f TAB TAB. IOW, try to type more input in minibuffer. This then raises the error "Buffer is read-only #" ------=_NextPart_000_0020_01CC2E6B.61AAE5B0 Content-Type: application/octet-stream; name="throw-one.el" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="throw-one.el" (defvar 1on1-minibuffer-frame nil "Minibuffer-only frame")=0A= =0A= (defcustom 1on1-minibuffer-frame-alist=0A= (list=0A= (assq 'foreground-color minibuffer-frame-alist)=0A= (assq 'background-color minibuffer-frame-alist)=0A= (assq 'font minibuffer-frame-alist)=0A= (assq 'mouse-color minibuffer-frame-alist)=0A= (assq 'cursor-color minibuffer-frame-alist)=0A= (assq 'menu-bar-lines minibuffer-frame-alist)=0A= (or (assq 'left minibuffer-frame-alist) (cons 'left 0))=0A= (or (assq 'height minibuffer-frame-alist) (cons 'height 2))=0A= (or (assq 'minibuffer minibuffer-frame-alist) (cons 'minibuffer = 'only))=0A= (or (assq 'user-position minibuffer-frame-alist) (cons 'user-position = t))=0A= (or (assq 'vertical-scroll-bars minibuffer-frame-alist)=0A= (cons 'vertical-scroll-bars nil))=0A= (or (assq 'name minibuffer-frame-alist) (cons 'name "Emacs = Minibuffer")))=0A= "*Frame-parameter alist for the standalone minibuffer frame=0A= `1on1-minibuffer-frame'.=0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= ;; If we didn't need Emacs 20 compatibility, this could be:=0A= ;; :type '(alist :key-type symbol :value-type sexp)=0A= :type '(repeat (cons :format "%v"=0A= (symbol :tag "Frame Parameter")=0A= (sexp :tag "Value")))=0A= :group 'frames)=0A= =0A= (defcustom 1on1-default-frame-alist=0A= (list=0A= (assq 'foreground-color default-frame-alist)=0A= (or (assq 'background-color default-frame-alist)=0A= (cons 'background-color "LightBlue"))=0A= (assq 'font default-frame-alist)=0A= (assq 'mouse-color default-frame-alist)=0A= (assq 'cursor-color default-frame-alist)=0A= (assq 'cursor-type default-frame-alist)=0A= (assq 'menu-bar-lines default-frame-alist)=0A= (or (assq 'top default-frame-alist) (cons 'top 0))=0A= (or (assq 'left default-frame-alist) (cons 'left 0))=0A= (or (assq 'width default-frame-alist) (cons 'width 80))=0A= (or (assq 'height default-frame-alist) (cons 'height 35))=0A= (or (assq 'minibuffer default-frame-alist) (cons 'minibuffer nil))=0A= (or (assq 'user-position default-frame-alist) (cons 'user-position t))=0A= (or (assq 'vertical-scroll-bars default-frame-alist)=0A= (cons 'vertical-scroll-bars 'right))=0A= (or (assq 'icon-type default-frame-alist) (cons 'icon-type nil))=0A= (or (assq 'tool-bar-lines default-frame-alist) (cons 'tool-bar-lines = 1))=0A= (if (cdr (assq 'left-fringe default-frame-alist))=0A= (assq 'left-fringe default-frame-alist)=0A= (cons 'left-fringe 0))=0A= (if (cdr (assq 'right-fringe default-frame-alist))=0A= (assq 'right-fringe default-frame-alist)=0A= (cons 'right-fringe 0)))=0A= "Properties to be used for One-on-One Emacs `default-frame-alist'.=0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= ;; If we didn't need Emacs 20 compatibility, this could be:=0A= ;; :type '(alist :key-type symbol :value-type sexp)=0A= :type '(repeat (cons :format "%v"=0A= (symbol :tag "Frame Parameter")=0A= (sexp :tag "Value")))=0A= :group 'frames)=0A= =0A= (defcustom 1on1-special-display-frame-alist=0A= (list=0A= (assq 'font special-display-frame-alist)=0A= (or (assq 'width special-display-frame-alist) (cons 'width 80))=0A= (or (assq 'height special-display-frame-alist) (cons 'height 20))=0A= (assq 'mouse-color special-display-frame-alist)=0A= (assq 'cursor-color special-display-frame-alist)=0A= (assq 'menu-bar-lines special-display-frame-alist)=0A= (assq 'foreground-color special-display-frame-alist)=0A= (or (assq 'background-color special-display-frame-alist)=0A= (cons 'background-color "LightSteelBlue"))=0A= (or (assq 'top special-display-frame-alist) (cons 'top 0))=0A= (or (assq 'left special-display-frame-alist) (cons 'left 0))=0A= (or (assq 'unsplittable special-display-frame-alist)=0A= (cons 'unsplittable t))=0A= (or (assq 'user-position special-display-frame-alist)=0A= (cons 'user-position t))=0A= (or (assq 'vertical-scroll-bars special-display-frame-alist)=0A= (cons 'vertical-scroll-bars 'right)))=0A= "Properties to be used for One-on-One `special-display-frame-alist'.=0A= If you customize this variable, you will need to rerun `1on1-emacs'=0A= for the new value to take effect."=0A= ;; If we didn't need Emacs 20 compatibility, this could be:=0A= ;; :type '(alist :key-type symbol :value-type sexp)=0A= :type '(repeat (cons :format "%v"=0A= (symbol :tag "Frame Parameter")=0A= (sexp :tag "Value")))=0A= :group 'frames)=0A= =0A= (defun 1on1-emacs ()=0A= "One-on-One Emacs setup.=0A= Use `1on1-default-frame-alist' and `1on1-special-display-frame-alist'.=0A= Create minibuffer-only frame, `1on1-minibuffer-frame', using=0A= `1on1-minibuffer-frame-alist'.=0A= Use special frame for *Completions* buffer."=0A= (interactive)=0A= (unless (if (fboundp 'display-graphic-p) (display-graphic-p) = window-system)=0A= (error "Use `1on1-emacs' only with a graphics display"))=0A= (setq default-frame-alist (append 1on1-default-frame-alist = default-frame-alist)=0A= special-display-frame-alist (append = 1on1-special-display-frame-alist=0A= special-display-frame-alist))=0A= ;; Treat *Completions* frame, so it gets focus from minibuffer frame.=0A= (add-to-list=0A= 'special-display-buffer-names=0A= '("*Completions*" 1on1-display-*Completions*-frame=0A= ((background-color . "LavenderBlush2")=0A= (menu-bar-lines . 0) (tool-bar-lines . 0)=0A= (width . 100))))=0A= (setq pop-up-frames t)=0A= (setq minibuffer-frame-alist (append 1on1-minibuffer-frame-alist=0A= minibuffer-frame-alist))=0A= (if 1on1-minibuffer-frame=0A= (modify-frame-parameters 1on1-minibuffer-frame = 1on1-minibuffer-frame-alist)=0A= (setq 1on1-minibuffer-frame=0A= (let ((after-make-frame-functions nil)) ; E.g. inhibit = `fit-frame'.=0A= (make-frame 1on1-minibuffer-frame-alist))))=0A= (1on1-set-minibuffer-frame-width)=0A= (1on1-set-minibuffer-frame-top/bottom)=0A= (setq minibuffer-auto-raise t)=0A= (setq w32-grab-focus-on-raise nil=0A= win32-grab-focus-on-raise nil)) ; older name=0A= =0A= (defun 1on1-display-*Completions*-frame (buf &optional args)=0A= "Display *Completions* buffer in its own frame.=0A= `special-display-function' is used to do the actual displaying.=0A= Completion input events are redirected to `1on1-minibuffer-frame'.=0A= BUF and ARGS are the arguments to `special-display-function'."=0A= (let (return-window)=0A= (setq return-window (select-window=0A= (funcall special-display-function buf args)))=0A= (raise-frame)=0A= (redirect-frame-focus (selected-frame) 1on1-minibuffer-frame)=0A= return-window))=0A= =0A= (defun 1on1-set-minibuffer-frame-top/bottom ()=0A= "Set position of minibuffer frame.=0A= Use `1on1-minibuffer-frame-top/bottom' if non-nil.=0A= Else, place minibuffer at bottom of display."=0A= (condition-case nil=0A= (redisplay t)=0A= (error nil)) ; Ignore e.g., killed buffers.=0A= (modify-frame-parameters=0A= 1on1-minibuffer-frame=0A= `((top ,@ (- (* 2 (frame-char-height 1on1-minibuffer-frame)))))))=0A= =0A= (defun 1on1-set-minibuffer-frame-width ()=0A= "Set width of minibuffer frame, in chars.=0A= Set relative to `1on1-minibuffer-frame' char size and display size."=0A= (set-frame-width=0A= 1on1-minibuffer-frame=0A= (/ (* 100 (x-display-pixel-width))=0A= (* 100 (frame-char-width 1on1-minibuffer-frame)))))=0A= =0A= ;; Last part of recipe for bug #8856:=0A= (load-file "c:/drews-lisp-20/window-2011-06-19a-MARTIN.el")=0A= (setq special-display-regexps '("[ ]?[*][^*]+[*]"))=0A= =0A= =0A= ------=_NextPart_000_0020_01CC2E6B.61AAE5B0-- From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 19 14:40:43 2011 Received: (at 8856) by debbugs.gnu.org; 19 Jun 2011 18:40:44 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYMvK-0005Zz-UD for submit@debbugs.gnu.org; Sun, 19 Jun 2011 14:40:43 -0400 Received: from mailout-de.gmx.net ([213.165.64.23]) by debbugs.gnu.org with smtp (Exim 4.69) (envelope-from ) id 1QYMvI-0005Zk-7d for 8856@debbugs.gnu.org; Sun, 19 Jun 2011 14:40:41 -0400 Received: (qmail invoked by alias); 19 Jun 2011 18:40:30 -0000 Received: from 62-47-58-218.adsl.highway.telekom.at (EHLO [62.47.58.218]) [62.47.58.218] by mail.gmx.net (mp033) with SMTP; 19 Jun 2011 20:40:30 +0200 X-Authenticated: #14592706 X-Provags-ID: V01U2FsdGVkX1/b0yQclUnbCwBkluBqxOVKuMLJ24aUS7VJ6IjfSK zt+M8DdHbySqOh Message-ID: <4DFE429B.4080704@gmx.at> Date: Sun, 19 Jun 2011 20:40:27 +0200 From: martin rudalics User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) MIME-Version: 1.0 To: Drew Adams Subject: Re: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at> <0137606B527A48C69E3D6C704C5C6595@us.oracle.com> In-Reply-To: <0137606B527A48C69E3D6C704C5C6595@us.oracle.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 X-Spam-Score: -2.5 (--) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -2.5 (--) > I've pared down the code to load. Just load the attached and then follow the > recipe: > > M-x f TAB ; to display *Completions* frame. > C-] ; to return to top level. > > M-x f TAB o > > Or just hit TAB twice in a row: M-x f TAB TAB. IOW, try to type more > input in minibuffer. > > This then raises the error > "Buffer is read-only #" It does. But it does the same on an old verion of trunk here too. Are you sure that the version of throw-one.el you sent me works with your old Emacs? BTW, in both versions I get the error when I hit c-] already. Anyway, let's see what happens. `display-buffer' should execute this part (while (and specifiers (not (window-live-p window))) ... (setq window ... ((eq method 'fun-with-args) (apply (cadr specifier) buffer (cddr specifier)))))) calling (defun 1on1-display-*Completions*-frame (buf &optional args) "..." (let (return-window) (setq return-window (select-window (funcall special-display-function buf args))) (raise-frame) (redirect-frame-focus (selected-frame) 1on1-minibuffer-frame) return-window)) returning return-window. After that `display-buffer' leaves the loop because return-window is hopefully live and (or (and (window-live-p window) window) returns window (that is your return-window). So I can't imagine that `display-buffer' got anything to do with this. However, I noticed that I have changed `pop-to-buffer'. Does it help if you use the version below? It doesn't help here as I explained above. martin (defun pop-to-buffer (&optional buffer-or-name specifiers norecord label) "..." (interactive "BPop to buffer:\nP") (let ((buffer (normalize-buffer-to-display buffer-or-name)) (old-window (selected-window)) (old-frame (selected-frame)) new-window new-frame) (set-buffer buffer) (setq new-window (display-buffer buffer specifiers label)) (unless (eq new-window old-window) ;; `display-buffer' has chosen another window, select it. (select-window new-window norecord) (setq new-frame (window-frame new-window)) (unless (eq new-frame old-frame) ;; `display-buffer' has chosen another frame, make sure it gets ;; input focus and is risen. (select-frame-set-input-focus new-frame))) buffer)) From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 19 14:50:45 2011 Received: (at 8856) by debbugs.gnu.org; 19 Jun 2011 18:50:46 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYN52-0006ay-RI for submit@debbugs.gnu.org; Sun, 19 Jun 2011 14:50:45 -0400 Received: from fencepost.gnu.org ([140.186.70.10]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYN51-0006ao-M8 for 8856@debbugs.gnu.org; Sun, 19 Jun 2011 14:50:44 -0400 Received: from cyd by fencepost.gnu.org with local (Exim 4.71) (envelope-from ) id 1QYN4w-00012M-1K; Sun, 19 Jun 2011 14:50:38 -0400 From: Chong Yidong To: "Drew Adams" Subject: Re: bug#8856: 24.0.50;regression: `special-display-frame' broken References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com> <4DF65024.20305@gmx.at> <0C191F638279437BADFCC697A5389F9E@us.oracle.com> <4DF726A1.7020804@gmx.at> <8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com> <4DFB6BBF.3080504@gmx.at> <6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com> <4DFDF8FD.3010502@gmx.at> <454481494EC843E0853B54DC014C08C0@us.oracle.com> Date: Sun, 19 Jun 2011 14:50:38 -0400 In-Reply-To: <454481494EC843E0853B54DC014C08C0@us.oracle.com> (Drew Adams's message of "Sun, 19 Jun 2011 07:31:23 -0700") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Spam-Score: -6.6 (------) X-Debbugs-Envelope-To: 8856 Cc: 'martin rudalics' , 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.6 (------) "Drew Adams" writes: > I see. You introduce a regression but won't click a link. > > OK, in that case see attached. These are the same two files for the recipes of > the other regressions reported. They are not large, and they are all you need - > the recipe is a self-contained test. A test case consisting of 1600+ lines of complicated Elisp code is not a good basis for debugging. Since you are the one who wrote the code, you are in the best position to try to isolate parts relevant to the recent changes. From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 19 14:54:36 2011 Received: (at 8856) by debbugs.gnu.org; 19 Jun 2011 18:54:36 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYN8l-0006gl-7M for submit@debbugs.gnu.org; Sun, 19 Jun 2011 14:54:35 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYN8j-0006gY-E2 for 8856@debbugs.gnu.org; Sun, 19 Jun 2011 14:54:33 -0400 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5JIsP77000860 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 19 Jun 2011 18:54:27 GMT Received: from acsmt356.oracle.com (acsmt356.oracle.com [141.146.40.156]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5JIsPP4002989 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 19 Jun 2011 18:54:25 GMT Received: from abhmt104.oracle.com (abhmt104.oracle.com [141.146.116.56]) by acsmt356.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5JIsKNc025435; Sun, 19 Jun 2011 13:54:20 -0500 Received: from dradamslap1 (/10.159.51.106) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 19 Jun 2011 11:54:19 -0700 From: "Drew Adams" To: "'Chong Yidong'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFDF8FD.3010502@gmx.at><454481494EC843E0853B54DC014C08C0@us.oracle.com> Subject: RE: bug#8856: 24.0.50;regression: `special-display-frame' broken Date: Sun, 19 Jun 2011 11:54:22 -0700 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: Thread-Index: Acwusc2T5G7NBiQhQYegKq9frie81wAADA0g X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090202.4DFE45E3.00B0:SCFMA922111,ss=1,re=-4.000,fgs=0 X-Spam-Score: -6.5 (------) X-Debbugs-Envelope-To: 8856 Cc: 'martin rudalics' , 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.5 (------) > A test case consisting of 1600+ lines of complicated Elisp > code is not a good basis for debugging. Since you are the > one who wrote the code, you are in the best position to try > to isolate parts relevant to the recent changes. I did pare down the code thereafter, which took some time. I was asking that the code be tried first as is, as the recipe is trivial and quick. That would at least determine whether you can reproduce it on your (non-Windows) platform. From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 19 15:35:09 2011 Received: (at 8856) by debbugs.gnu.org; 19 Jun 2011 19:35:09 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYNm0-0001Td-Rl for submit@debbugs.gnu.org; Sun, 19 Jun 2011 15:35:09 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYNly-0001T9-CR for 8856@debbugs.gnu.org; Sun, 19 Jun 2011 15:35:06 -0400 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5JJYwHE031876 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 19 Jun 2011 19:35:00 GMT Received: from acsmt358.oracle.com (acsmt358.oracle.com [141.146.40.158]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5JJYv3X020430 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 19 Jun 2011 19:34:58 GMT Received: from abhmt017.oracle.com (abhmt017.oracle.com [141.146.116.26]) by acsmt358.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5JJYqp1024126; Sun, 19 Jun 2011 14:34:52 -0500 Received: from dradamslap1 (/10.159.51.106) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 19 Jun 2011 12:34:51 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at> <0137606B527A48C69E3D6C704C5C6595@us.oracle.com> <4DFE429B.4080704@gmx.at> Subject: RE: bug#8856: 24.0.50; regression: `special-display-popup-frame' broken Date: Sun, 19 Jun 2011 12:34:54 -0700 Message-ID: <7830B89D1DB84E4780E96BAF732EB850@us.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <4DFE429B.4080704@gmx.at> Thread-Index: AcwusGMu2JvKM6/YQUyKlvmeM8KIwAABPWVA X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090207.4DFE4F64.008B:SCFMA922111,ss=1,re=-4.000,fgs=0 X-Spam-Score: -6.5 (------) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.5 (------) > > This then raises the error > > "Buffer is read-only #" > > It does. But it does the same on an old verion of trunk here > too. Are you sure that the version of throw-one.el you sent > me works with your old Emacs? Yes, I'm sure. I just re-tested using throw-one.el with both Emacs 23.3 and with a build from the week before your code was added, 2011-06-03. However, I had to remove the line I had added to throw-one.el to load your window.el, since otherwise I got an error saying that function `window-list-1' is void. IOW, I cannot test an older build with your new window.el, because of that error, but I can test an older build without any of your additions. Things work fine with the older builds, starting from emacs -Q, with throw-one.el (minus the line loading your new window.el). When I test using any such old builds, the minibuffer frame keeps the focus properly, so there is no error saying that *Completions* is read-only. IOW, the focus redirection from the *Completions* frame to the minibuffer frame works (in the versions prior to your addition). > BTW, in both versions I get the error when I hit c-] already. I do not get any error when I hit `C-]'. Instead I get the normal behavior for `C-]', with the message `Quit' in the echo area. What you're seeing sounds like another bug (even in older releases apparently), on your platform but not on mine (Windows). `C-]' (`abort-recursive-edit') should just exit to the top level and print `Quit' in this case. Maybe, if you cannot reproduce the bug I reported, it is MS Windows-specific. > Anyway, let's see what happens. `display-buffer' should > execute this part... So I can't imagine that `display-buffer' > got anything to do with this. I don't quite follow you here. Was there something you wanted me to check about that? > However, I noticed that I have changed `pop-to-buffer'. Does > it help if you use the version below? It doesn't help here as > I explained above. > > (defun pop-to-buffer... No, that changes nothing, unfortunately. I see exactly the same behavior (and different behavior apparently from what you see). This is one reason I wanted you to just load the original files I sent and see if you could reproduce the problem, as a start. It's looking like the bug might be Windows-specific. Anyway, we at least now have a pared-down file to test with. Thx. From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 19 15:52:35 2011 Received: (at 8856) by debbugs.gnu.org; 19 Jun 2011 19:52:35 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYO2s-0002ci-Q0 for submit@debbugs.gnu.org; Sun, 19 Jun 2011 15:52:34 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYO2q-0002cU-Gw for 8856@debbugs.gnu.org; Sun, 19 Jun 2011 15:52:33 -0400 Received: from rtcsinet21.oracle.com (rtcsinet21.oracle.com [66.248.204.29]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5JJqNjl013357 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 19 Jun 2011 19:52:26 GMT 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 p5JJqMR2014023 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 19 Jun 2011 19:52:23 GMT Received: from abhmt001.oracle.com (abhmt001.oracle.com [141.146.116.10]) by acsmt356.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5JJqHTM015315; Sun, 19 Jun 2011 14:52:17 -0500 Received: from dradamslap1 (/10.159.51.106) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 19 Jun 2011 12:52:17 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFE429B.4080704@gmx.at> <7830B89D1DB84E4780E96BAF732EB850@us.oracle.com> Subject: RE: bug#8856: 24.0.50; regression: `special-display-popup-frame' broken Date: Sun, 19 Jun 2011 12:52:20 -0700 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <7830B89D1DB84E4780E96BAF732EB850@us.oracle.com> Thread-Index: AcwusGMu2JvKM6/YQUyKlvmeM8KIwAABPWVAAAElr7A= X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: rtcsinet21.oracle.com [66.248.204.29] X-CT-RefId: str=0001.0A090205.4DFE537A.00AB:SCFSTAT5015188, ss=1, re=-4.000, fgs=0 X-Spam-Score: -6.5 (------) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.5 (------) Does it help if I give you the value of `display-buffer-alist'? Here is the value in a test that manifests the bug (i.e., using throw-one.el and your latest window.el), as shown by `C-h v': Value: ((((regexp . ".*")) reuse-window (reuse-window nil same visible) pop-up-window (pop-up-window (largest) (lru)) pop-up-frame (pop-up-frame) reuse-window (reuse-window nil other visible) (reuse-window-even-sizes . t))) Original value was ((((regexp . ".*")) reuse-window (reuse-window nil same visible) pop-up-window (pop-up-window (largest) (lru)) (pop-up-window-min-height . 40) (pop-up-window-min-width . 80) reuse-window (reuse-window other nil nil) (reuse-window-even-sizes . t))) From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 20 05:47:01 2011 Received: (at 8856) by debbugs.gnu.org; 20 Jun 2011 09:47:01 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYb4O-00050c-Ud for submit@debbugs.gnu.org; Mon, 20 Jun 2011 05:47:01 -0400 Received: from mailout-de.gmx.net ([213.165.64.23]) by debbugs.gnu.org with smtp (Exim 4.69) (envelope-from ) id 1QYb4M-00050Q-Vn for 8856@debbugs.gnu.org; Mon, 20 Jun 2011 05:47:00 -0400 Received: (qmail invoked by alias); 20 Jun 2011 09:46:52 -0000 Received: from 62-47-53-188.adsl.highway.telekom.at (EHLO [62.47.53.188]) [62.47.53.188] by mail.gmx.net (mp069) with SMTP; 20 Jun 2011 11:46:52 +0200 X-Authenticated: #14592706 X-Provags-ID: V01U2FsdGVkX18oxqteW0MoYlsASCBfrGbf549/kAnCC7T1hawsen CvMdZVlEYGIWHS Message-ID: <4DFF1709.3010409@gmx.at> Date: Mon, 20 Jun 2011 11:46:49 +0200 From: martin rudalics User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) MIME-Version: 1.0 To: Drew Adams Subject: Re: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at> <0137606B527A48C69E3D6C704C5C6595@us.oracle.com> In-Reply-To: <0137606B527A48C69E3D6C704C5C6595@us.oracle.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 X-Spam-Score: -1.7 (-) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -1.7 (-) > I've pared down the code to load. Just load the attached and then follow the > recipe: > > M-x f TAB ; to display *Completions* frame. > C-] ; to return to top level. > > M-x f TAB o > > Or just hit TAB twice in a row: M-x f TAB TAB. IOW, try to type more > input in minibuffer. > > This then raises the error > "Buffer is read-only #" I suppose that after "loading the attached" I have to call `1on1-emacs' in order to set up things first. Only then I should try the M-x f TAB stuff. If I do that, I can see different behaviors indeed. I'll look into this. martin From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 20 09:01:57 2011 Received: (at 8856) by debbugs.gnu.org; 20 Jun 2011 13:01:57 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYe72-0002ex-Ja for submit@debbugs.gnu.org; Mon, 20 Jun 2011 09:01:57 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYe6z-0002ej-7U for 8856@debbugs.gnu.org; Mon, 20 Jun 2011 09:01:54 -0400 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5KD1jCo022208 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 20 Jun 2011 13:01:46 GMT Received: from acsmt356.oracle.com (acsmt356.oracle.com [141.146.40.156]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5KD1gHF004106 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 20 Jun 2011 13:01:44 GMT Received: from abhmt005.oracle.com (abhmt005.oracle.com [141.146.116.14]) by acsmt356.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5KD1ZG5008315; Mon, 20 Jun 2011 08:01:37 -0500 Received: from dradamslap1 (/10.159.51.9) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 20 Jun 2011 06:01:33 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at> <0137606B527A48C69E3D6C704C5C6595@us.oracle.com> <4DFF1709.3010409@gmx.at> Subject: RE: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated Date: Mon, 20 Jun 2011 06:01:22 -0700 Message-ID: <309F7428711D4BEBB6063C60808D8069@us.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <4DFF1709.3010409@gmx.at> Thread-Index: AcwvLwuCub6BfpMeTN61Ihi/+Ryx9AAGm2dw X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090203.4DFF44BB.0045:SCFMA922111,ss=1,re=-4.000,fgs=0 X-Spam-Score: -6.5 (------) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.5 (------) > > I've pared down the code to load. Just load the attached > > and then follow the recipe: > > M-x f TAB ; to display *Completions* frame. > > C-] ; to return to top level. > > M-x f TAB o > > Or just hit TAB twice in a row: M-x f TAB TAB. IOW, try > > to type more input in minibuffer. > > This then raises the error > > "Buffer is read-only #" > > I suppose that after "loading the attached" I have to call > `1on1-emacs' in order to set up things first. Only then I should > try the M-x f TAB stuff. > > If I do that, I can see different behaviors indeed. I'll look into > this. Great, thanks. Actually, I meant that you need to do this, as stated earlier (for the earlier load files): runemacs.exe -Q --debug-init -l "throw-one.el" -f "1on1-emacs" IOW, I believe that you must invoke `1on1-emacs' from the command line this way, so it is called before any frames are displayed. Otherwise, you will end up with two minibuffers: the standalone minibuffer frame will not function for some things; rather, the initial minibuffer (in a normal frame) will be used. At least that's what I see on Windows, and I expect that it is the case for you too. Please run Emacs this way for testing this, so we're on the same page. From debbugs-submit-bounces@debbugs.gnu.org Tue Jun 21 14:11:20 2011 Received: (at 8856) by debbugs.gnu.org; 21 Jun 2011 18:11:20 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QZ5Pz-0006nB-9Y for submit@debbugs.gnu.org; Tue, 21 Jun 2011 14:11:19 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QZ5Px-0006mv-9D for 8856@debbugs.gnu.org; Tue, 21 Jun 2011 14:11:17 -0400 Received: from rtcsinet22.oracle.com (rtcsinet22.oracle.com [66.248.204.30]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5LIB9XI010596 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 21 Jun 2011 18:11:11 GMT Received: from acsmt356.oracle.com (acsmt356.oracle.com [141.146.40.156]) by rtcsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5LIB7q8019601 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 21 Jun 2011 18:11:08 GMT 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 p5LIB28I007505; Tue, 21 Jun 2011 13:11:02 -0500 Received: from dradamslap1 (/10.159.50.205) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 21 Jun 2011 11:11:01 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at> <0137606B527A48C69E3D6C704C5C6595@us.oracle.com> <4DFF1709.3010409@gmx.at> <309F7428711D4BEBB6063C60808D8069@us.oracle.com> <4E00C54C.5080108@gmx.at> Subject: RE: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated Date: Tue, 21 Jun 2011 11:10:58 -0700 Message-ID: <7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <4E00C54C.5080108@gmx.at> Thread-Index: AcwwMJAJgbB4AcwWRUKQOUT5Wc2+IgABpU7g X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: rtcsinet22.oracle.com [66.248.204.30] X-CT-RefId: str=0001.0A090204.4E00DEBF.0098:SCFSTAT5015188, ss=1, re=-4.000, fgs=0 X-Spam-Score: -6.5 (------) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.5 (------) > > Please run Emacs this way for testing this, so we're on > > the same page. > > I know what the bug is now. The old code ran some very complicated > raise-frame mechanism but did _not_ select the window if it already > existed on another frame. That's what I changed in the new > code to make it uniform with the pop-up-a-new-frame behavior. > Apparently that was a bad idea. I now (hopefully) reverted the > old behavior. > > Attached find the latest window.el. It only works with the latest two > versions uploaded by Sean. If you get any warnings or bugs > when loading or compiling it please tell me. I'll give it a try and let you knonw. Thanks for struggling with all of this, and for trying to improve the handling of windows and frames - a daunting task, no doubt. > Also, `display-buffer-alist' will unlikely work with your code > yet. So you need to trigger 1on1 using the old options. I'm not sure what you mean, in particular by the last sentence. Are you referring to how command `1on1-emacs' is invoked or to something else? I assume that I would at least need to replace the assignment, in `1on1-emacs', of `pop-up-frames' to `t' by something else, presumably something involving `display-buffer-alist'. Are you saying that there is not yet any good replacement in this case? Will you let me know when you have an idea what I can do, to DTRT, once the "yet" is dealt with? > Redirecting frame focus is not very easy to handle :-( I am sure of that. And most users have nil `pop-up-frames' (or equivalent), and they never have to deal with focus redirection. Likewise most Emacs maintainers. I've been trying to get Emacs Dev to think (and test!) more in terms of frames for years. Frames are nearly second-class citizens for Emacs. Development and maintenance changes have often, I think, been tested only with `pop-up-frames' = nil. Certainly they are more tested in that case than in the non-nil case. Frames are almost an afterthought. Partly this is no doubt due to frames being handled differently by different window mgrs. Partly it may be due to habit (Emacs had windows before frames, most users do not use non-nil `pop-up-frames', etc.). -- BTW, as you might have noticed in looking at command `1on1-emacs' and `oneonone.el' generally, it presents an example of why it is wrong to think that code should never bind or set user options. I mention this because (you think that) you disagree. Emacs base code should not overrule user settings, of course. But code that is invoked by user choice is another story. A user chooses to invoke a command, just as s?he chooses option settings and other default values. It is helpful for the command's doc in this case to mention that it temporarily binds such-and-such user option to such-and-such value or that it sets the option (i.e. not just temporarily), etc. But there is no reason that a voluntarily invoked command should not alter a user setting. The moral obligation is to let users know just what the consequences of invocation are, including option changes. A user of command `1on1-emacs' should know that it sets `pop-up-frames' to t, and that that is precisely part of the command's raison d'etre. You use `1on1-emacs' only if you want non-nil `pop-up-frames'. Emacs has always allowed for and even provided option-altering commands. See `customize-set-variable', `customize-set-value', and `set-variable', for instance. Personally, although I try to convince users to use Customize rather than just Lisp code, I also believe it is helpful to go beyond Customize as an interactive way to modify options and faces. I've done that with Do Re Mi, for instance: provide commands to easily modify option values incrementally. Nothing wrong with that - in fact, we could use more of it. Nothing should limit us to the Customize UI as the only way to interactively change user settings. From debbugs-submit-bounces@debbugs.gnu.org Tue Jun 21 20:13:43 2011 Received: (at 8856) by debbugs.gnu.org; 22 Jun 2011 00:13:43 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QZB4g-0001Bv-TX for submit@debbugs.gnu.org; Tue, 21 Jun 2011 20:13:43 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QZB4f-0001Bi-C7 for 8856@debbugs.gnu.org; Tue, 21 Jun 2011 20:13:42 -0400 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5M0DXwj009725 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 22 Jun 2011 00:13:35 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5M0DWTP010431 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 22 Jun 2011 00:13:33 GMT Received: from abhmt010.oracle.com (abhmt010.oracle.com [141.146.116.19]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5M0DR3m028515; Tue, 21 Jun 2011 19:13:27 -0500 Received: from dradamslap1 (/10.159.50.205) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 21 Jun 2011 17:13:26 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFF1709.3010409@gmx.at><309F7428711D4BEBB6063C60808D8069@us.oracle.com><4E00C54C.5080108@gmx.at> <7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com> Subject: RE: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated Date: Tue, 21 Jun 2011 17:13:24 -0700 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com> Thread-Index: AcwwMJAJgbB4AcwWRUKQOUT5Wc2+IgABpU7gAA5/F1A= X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090202.4E0133AF.008C:SCFMA922111,ss=1,re=-4.000,fgs=0 X-Spam-Score: -6.5 (------) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.5 (------) > I know what the bug is now. > Attached find the latest window.el. I tried it, using a new build from Sean (from 6/20). I tested it with my full setup (oneonone.el etc., not just the pared-down file I sent you). I still see the problem reported for this bug: focus of *Completions* is not being redirected to the minibuffer frame. I get the same read-only error. But now I see that problem only when the *Completions* frame is created, not when the frame is already displayed. That's the _opposite_ behavior from before: Previously, if the frame was already displayed then I got the error, but not when it was first displayed (created). Also, now I do not get the appearance that I defined for the *Completions* frame. The frame background color is that of a normal frame etc. This is true in the latest build, whether I load your new window.el or not. However, buffer *Help* is correctly displayed according to its special-display function, `1on1-display-*Help*-frame' - it has the proper background color etc. Also, when I byte-compiled the file (to test that as you requested): 1. The *Compile-Log* buffer was not displayed. That's probably because it had only this in it (so probably this is not a problem): Compiling file .../window-2011-06-21a-MARTIN.el at Tue Jun 21 11:38:26 2011 2. When I click mouse-2 on buffer *Compile-Log* in the buffer list, or I use C-x 4 b to choose it, buffer *Compile-Log* is displayed in an ordinary frame, not in a special-display frame as it should be. This, in spite of the fact that M-: (string-match "[ ]?[*][^*]+[*]" "*Compile-Log*") returns 0; that string is the only one in my `special-display-buffer-regexps'. (What's more, my automatic frame-fitting is not invoked now, so the frame is tiny. I'll worry about that separately, for now.) Other buffers that should have special-display frames (e.g. whose names match `special-display-buffer-regexps') are correctly shown in the default special-display frames, however. From debbugs-submit-bounces@debbugs.gnu.org Tue Jun 21 20:14:30 2011 Received: (at 8856) by debbugs.gnu.org; 22 Jun 2011 00:14:31 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QZB5S-0001DV-9I for submit@debbugs.gnu.org; Tue, 21 Jun 2011 20:14:30 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QZB5Q-0001DJ-K7 for 8856@debbugs.gnu.org; Tue, 21 Jun 2011 20:14:29 -0400 Received: from rtcsinet21.oracle.com (rtcsinet21.oracle.com [66.248.204.29]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5M0EKSw010587 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 22 Jun 2011 00:14:22 GMT Received: from acsmt358.oracle.com (acsmt358.oracle.com [141.146.40.158]) by rtcsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5M0EJHn003462 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 22 Jun 2011 00:14:20 GMT Received: from abhmt006.oracle.com (abhmt006.oracle.com [141.146.116.15]) by acsmt358.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5M0EFX1014164; Tue, 21 Jun 2011 19:14:16 -0500 Received: from dradamslap1 (/10.159.50.205) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 21 Jun 2011 17:14:15 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFF1709.3010409@gmx.at><309F7428711D4BEBB6063C60808D8069@us.oracle.com><4E00C54C.5080108@gmx.at> <7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com> Subject: RE: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated Date: Tue, 21 Jun 2011 17:14:17 -0700 Message-ID: <368ABEE1675A4E76BAFE29A052BE6636@us.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com> Thread-Index: AcwwMJAJgbB4AcwWRUKQOUT5Wc2+IgABpU7gAA6HltA= X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: rtcsinet21.oracle.com [66.248.204.29] X-CT-RefId: str=0001.0A090202.4E0133DE.00BB:SCFSTAT5015188, ss=1, re=-4.000, fgs=0 X-Spam-Score: -6.5 (------) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.5 (------) > I tested it with my full setup (oneonone.el etc., not just the > pared-down file I sent you). > I still see the problem reported for this bug: focus of > *Completions* is not being redirected to the minibuffer > frame. I get the same read-only error. > But now I see that problem only when the *Completions* frame > is created, not when the frame is already displayed. That's > the _opposite_ behavior from before... > Also, now I do not get the appearance that I defined for the > *Completions* frame. The frame background color is that of a > normal frame etc. This is true in the latest build, whether > I load your new window.el or not. I also tested using throw-one.el (but with the file loaded at the end being your latest window.el, not the one from 6/19). With that test: 1. *Completions* is shown with the proper frame background. 2. But it does not seem to be dedicated, in this sense: If you do `M-x f TAB o TAB' everything seems fine, but if you then hit `rwa TAB' (matching all commands that start with `forward-'), buffer *Completions* gets replaced by buffer *scratch* in its frame. Hitting TAB again puts *Completions* back there, but *scratch* should never appear in that dedicated frame/window. You can see the same thing (*scratch* replacing *Completions*) if you just type something that has no match: `M-x f TAB qqqqqqqqq'. However, (window-dedicated-p (get-buffer-window "*Completions*" 0)) returns t, so officially it is dedicated. The window, at least. Maybe the window itself is being replaced in that frame by another window? No idea. 3. I do not see the read-only-error problem I reported earlier today from using my full setup, so this pared-down test is no longer sufficient to get that. I also do not see that error if I use the original recipe, with just hexrgb.el and oneonone.el. So I'll have to start again from my full setup and pare down to something smaller. I cannot do that right away, however. Thx, HTH. From debbugs-submit-bounces@debbugs.gnu.org Tue Jun 21 20:15:29 2011 Received: (at 8856) by debbugs.gnu.org; 22 Jun 2011 00:15:29 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QZB6O-0001tS-Lc for submit@debbugs.gnu.org; Tue, 21 Jun 2011 20:15:28 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QZB6N-0001lD-8M for 8856@debbugs.gnu.org; Tue, 21 Jun 2011 20:15:27 -0400 Received: from rtcsinet22.oracle.com (rtcsinet22.oracle.com [66.248.204.30]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5M0FJwY011661 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 22 Jun 2011 00:15:21 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by rtcsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5M0FIPX025913 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 22 Jun 2011 00:15:19 GMT Received: from abhmt004.oracle.com (abhmt004.oracle.com [141.146.116.13]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5M0FD62029462; Tue, 21 Jun 2011 19:15:13 -0500 Received: from dradamslap1 (/10.159.50.205) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 21 Jun 2011 17:15:08 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFF1709.3010409@gmx.at><309F7428711D4BEBB6063C60808D8069@us.oracle.com><4E00C54C.5080108@gmx.at> <7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com> Subject: RE: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated Date: Tue, 21 Jun 2011 17:15:10 -0700 Message-ID: <31769215C0FF4E1E89F9F641C5843E91@us.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0116_01CC3036.C78940D0" X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com> Thread-Index: AcwwMJAJgbB4AcwWRUKQOUT5Wc2+IgABpU7gAA6Nv/A= X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: rtcsinet22.oracle.com [66.248.204.30] X-CT-RefId: str=0001.0A090202.4E013419.00E5:SCFSTAT5015188, ss=1, re=-6.300, fgs=0 X-Spam-Score: -5.8 (-----) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -5.8 (-----) This is a multi-part message in MIME format. ------=_NextPart_000_0116_01CC3036.C78940D0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit > 3. I do not see the read-only-error problem I reported > earlier today from using my full setup, so this pared-down > test is no longer sufficient to get that. I also do not see > that error if I use the original recipe, with just hexrgb.el > and oneonone.el. So I'll have to start again from my full > setup and pare down to something smaller. I cannot do that > right away, however. OK, I've now pared down from my full setup again. Took quite a while. Use the attached file, starting Emacs, as before, this way, where the first load file is your latest window.el: runemacs.exe -Q --debug-init -l "window-2011-06-21a-MARTIN.el" -l "throw-three.el" -f "1on1-emacs" Then, as before (but no need to exit to top level before typing more chars): M-x f TAB o When you hit TAB, *Completions* is shown in its frame, as expected. As soon as you hit the second char (`o'), you get the read-only error. Note: In the file, both of these two lines are necessary, to cause the error: (add-hook 'post-command-hook '1on1-fit-minibuffer-frame) (setq w32-grab-focus-on-raise nil) The second is of course Windows-specific. If I comment that out then the error is not raised, but instead when I hit `o' the focus just changes to the minibuffer (no `o' char appears in the minibuffer at this point). I can tell that the focus changes because the frame border shows that (the active frame border is a diff color from inactive frame borders - this is a window mgr thing, not an Emacs thing). Then, if I hit `o' a second time it (a single `o' is inserted in the minibuffer. Thx/HTH. ------=_NextPart_000_0116_01CC3036.C78940D0 Content-Type: application/octet-stream; name="throw-three.el" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="throw-three.el" (setq debug-on-error t)=0A= =0A= (load-file "c:/drews-lisp-20/hexrgb.el")=0A= (load-file "c:/drews-lisp-20/fit-frame.el")=0A= =0A= =0A= ;;; Minibuffer frame: ********************************=0A= ;;;=0A= (defvar 1on1-minibuffer-frame nil "")=0A= =0A= (defcustom 1on1-minibuffer-frame-alist=0A= (list=0A= (assq 'foreground-color minibuffer-frame-alist)=0A= (or (assq 'background-color minibuffer-frame-alist)=0A= (cons 'background-color "LightBlue"))=0A= (assq 'font minibuffer-frame-alist)=0A= (assq 'mouse-color minibuffer-frame-alist)=0A= (assq 'cursor-color minibuffer-frame-alist)=0A= (or (assq 'menu-bar-lines minibuffer-frame-alist)=0A= (cons 'menu-bar-lines 0))=0A= (or (assq 'left minibuffer-frame-alist)=0A= (cons 'left 0))=0A= (or (assq 'height minibuffer-frame-alist)=0A= (cons 'height 2))=0A= (or (assq 'icon-type minibuffer-frame-alist)=0A= (cons 'icon-type (< emacs-major-version 21))) ; `t' for Emacs 21 = too?=0A= (or (assq 'minibuffer minibuffer-frame-alist)=0A= (cons 'minibuffer 'only))=0A= (or (assq 'user-position minibuffer-frame-alist)=0A= (cons 'user-position t))=0A= (or (assq 'vertical-scroll-bars minibuffer-frame-alist) ; No scroll = bar.=0A= (cons 'vertical-scroll-bars nil))=0A= (or (assq 'name minibuffer-frame-alist)=0A= (cons 'name "Emacs Minibuffer")))=0A= ""=0A= :type '(repeat (cons :format "%v" (symbol :tag "Frame Parameter") = (sexp :tag "Value")))=0A= :group 'One-On-One)=0A= =0A= ;;; *Completions* frame: ********************************=0A= (defcustom 1on1-default-frame-alist=0A= (list=0A= (assq 'foreground-color default-frame-alist)=0A= (or (assq 'background-color default-frame-alist)=0A= (cons 'background-color "LightBlue"))=0A= (assq 'font default-frame-alist)=0A= (assq 'mouse-color default-frame-alist)=0A= (assq 'cursor-color default-frame-alist)=0A= (assq 'cursor-type default-frame-alist)=0A= (or (assq 'menu-bar-lines default-frame-alist)=0A= (cons 'menu-bar-lines 1))=0A= (or (assq 'top default-frame-alist)=0A= (cons 'top 0))=0A= (or (assq 'left default-frame-alist)=0A= (cons 'left 0))=0A= (or (assq 'width default-frame-alist)=0A= (cons 'width 80))=0A= (or (assq 'height default-frame-alist)=0A= (cons 'height 35))=0A= (or (assq 'minibuffer default-frame-alist)=0A= (cons 'minibuffer nil))=0A= (or (assq 'user-position default-frame-alist)=0A= (cons 'user-position t))=0A= (or (assq 'vertical-scroll-bars default-frame-alist)=0A= (cons 'vertical-scroll-bars 'right))=0A= (or (assq 'icon-type default-frame-alist)=0A= (cons 'icon-type (< emacs-major-version 21))) ; `t' for Emacs 21 = too?=0A= (or (assq 'tool-bar-lines default-frame-alist)=0A= (cons 'tool-bar-lines 1)) ; Emacs 21+=0A= (if (cdr (assq 'left-fringe default-frame-alist))=0A= (assq 'left-fringe default-frame-alist)=0A= (cons 'left-fringe 0)) ; Emacs 21+=0A= (if (cdr (assq 'right-fringe default-frame-alist))=0A= (assq 'right-fringe default-frame-alist)=0A= (cons 'right-fringe 0)) ; Emacs 21+=0A= (or (assq 'fringe default-frame-alist)=0A= (cons 'fringe 0))) ; Emacs 21, but not 21.3.50 - = REMOVE after 22.x=0A= ""=0A= :type '(repeat (cons :format "%v" (symbol :tag "Frame Parameter") = (sexp :tag "Value")))=0A= :group 'frames)=0A= =0A= ;;; Special-display frames=0A= (defcustom 1on1-special-display-frame-alist=0A= (list=0A= (assq 'font special-display-frame-alist)=0A= (or (assq 'width special-display-frame-alist)=0A= (cons 'width 80))=0A= (or (assq 'height special-display-frame-alist)=0A= (cons 'height 20))=0A= (assq 'mouse-color special-display-frame-alist)=0A= (assq 'cursor-color special-display-frame-alist)=0A= (or (assq 'menu-bar-lines special-display-frame-alist)=0A= (cons 'menu-bar-lines 1))=0A= (assq 'foreground-color special-display-frame-alist)=0A= (or (assq 'background-color special-display-frame-alist)=0A= (cons 'background-color "LightSteelBlue"))=0A= (or (assq 'top special-display-frame-alist)=0A= (cons 'top 0))=0A= (or (assq 'left special-display-frame-alist)=0A= (cons 'left 0))=0A= (or (assq 'unsplittable special-display-frame-alist)=0A= (cons 'unsplittable t))=0A= (or (assq 'user-position special-display-frame-alist)=0A= (cons 'user-position t))=0A= (or (assq 'vertical-scroll-bars special-display-frame-alist)=0A= (cons 'vertical-scroll-bars 'right)))=0A= ""=0A= :type '(repeat (cons :format "%v" (symbol :tag "Frame Parameter") = (sexp :tag "Value")))=0A= :group 'frames)=0A= =0A= (defun 1on1-emacs ()=0A= ""=0A= (interactive)=0A= (unless (if (fboundp 'display-graphic-p) (display-graphic-p) = window-system)=0A= (error "Use `1on1-emacs' only with a graphics display, not with a = text terminal"))=0A= (setq default-frame-alist (append 1on1-default-frame-alist = default-frame-alist)=0A= special-display-frame-alist (append = 1on1-special-display-frame-alist=0A= special-display-frame-alist))=0A= (add-to-list ; *Help* frame=0A= 'special-display-buffer-names=0A= (list "*Help*" '1on1-display-*Help*-frame=0A= (list (cons 'background-color "Thistle")=0A= '(height . 40))))=0A= (add-to-list ; *Completions* frame=0A= 'special-display-buffer-names=0A= `("*Completions*" 1on1-display-*Completions*-frame=0A= ((background-color . "LavenderBlush2")=0A= (menu-bar-lines . 0) (tool-bar-lines . 0)=0A= (width . 100))))=0A= (setq pop-up-frames t)=0A= ;; Minibuffer frame=0A= (setq minibuffer-frame-alist (append 1on1-minibuffer-frame-alist=0A= minibuffer-frame-alist))=0A= (if 1on1-minibuffer-frame=0A= (modify-frame-parameters 1on1-minibuffer-frame = 1on1-minibuffer-frame-alist)=0A= (setq 1on1-minibuffer-frame=0A= (make-frame 1on1-minibuffer-frame-alist)))=0A= (set-frame-width 1on1-minibuffer-frame 150)=0A= (modify-frame-parameters 1on1-minibuffer-frame `((top ,@ -50)))=0A= (setq minibuffer-auto-raise t)=0A= =0A= ;; Hooks.=0A= ;; @@@=0A= (add-hook 'post-command-hook '1on1-fit-minibuffer-frame)=0A= (setq w32-grab-focus-on-raise nil)=0A= ;; @@@=0A= )=0A= =0A= (defun 1on1-display-*Help*-frame (buf &optional args)=0A= ""=0A= (let (return-window)=0A= (setq return-window (select-window (funcall special-display-function = buf args)))=0A= (raise-frame)=0A= return-window))=0A= =0A= (defun 1on1-display-*Completions*-frame (buf &optional args)=0A= ""=0A= (let (return-window)=0A= (setq return-window (select-window (funcall special-display-function = buf args)))=0A= (raise-frame)=0A= (when (boundp '1on1-minibuffer-frame)=0A= (redirect-frame-focus (selected-frame) 1on1-minibuffer-frame))=0A= return-window))=0A= =0A= ;; @@@=0A= (defun 1on1-fit-minibuffer-frame ()=0A= ""=0A= (interactive)=0A= (when (and (active-minibuffer-window)=0A= (save-selected-window=0A= (select-window (minibuffer-window))=0A= (one-window-p nil 'selected-frame)))=0A= (let* ((frame (save-selected-window=0A= (select-window (minibuffer-window)) = (selected-frame)))=0A= (frame-height (frame-height frame)))=0A= (cond=0A= ((eq last-command '1on1-fit-minibuffer-frame)=0A= (set-frame-height frame (1+ (frame-height frame)))=0A= (modify-frame-parameters 1on1-minibuffer-frame `((top ,@ -50)))=0A= (condition-case nil (scroll-down (frame-height frame)) (error = nil)))=0A= (t=0A= (let ((window-min-height 2))=0A= (modify-frame-parameters 1on1-minibuffer-frame `((top ,@ = -50)))=0A= (condition-case nil (scroll-down (frame-height frame)) (error = nil))))))))=0A= =0A= ;; @@@=0A= =0A= =0A= =0C=0A= (load-file "c:/drews-lisp-20/window-2011-06-21a-MARTIN.el")=0A= ------=_NextPart_000_0116_01CC3036.C78940D0-- From debbugs-submit-bounces@debbugs.gnu.org Thu Jun 23 12:45:51 2011 Received: (at 8856) by debbugs.gnu.org; 23 Jun 2011 16:45:51 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QZn2N-0004sQ-7u for submit@debbugs.gnu.org; Thu, 23 Jun 2011 12:45:51 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QZn2K-0004sD-SO for 8856@debbugs.gnu.org; Thu, 23 Jun 2011 12:45:49 -0400 Received: from rtcsinet21.oracle.com (rtcsinet21.oracle.com [66.248.204.29]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5NGjeUb005019 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 23 Jun 2011 16:45:42 GMT 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 p5NGjdT8001412 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 23 Jun 2011 16:45:40 GMT Received: from abhmt001.oracle.com (abhmt001.oracle.com [141.146.116.10]) by acsmt356.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5NGjX6u002682; Thu, 23 Jun 2011 11:45:33 -0500 Received: from dradamslap1 (/10.159.61.188) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 23 Jun 2011 09:45:32 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFF1709.3010409@gmx.at><309F7428711D4BEBB6063C60808D8069@us.oracle.com><4E00C54C.5080108@gmx.at><7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com> <31769215C0FF4E1E89F9F641C5843E91@us.oracle.com> Subject: RE: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated Date: Thu, 23 Jun 2011 09:45:29 -0700 Message-ID: <5450FF6E1BAC409AB30733F9ABE51C31@us.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_009E_01CC318A.4A571290" X-Mailer: Microsoft Office Outlook 11 Thread-Index: AcwwMJAJgbB4AcwWRUKQOUT5Wc2+IgABpU7gAA6Nv/AAVM4y4A== In-Reply-To: <31769215C0FF4E1E89F9F641C5843E91@us.oracle.com> X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: rtcsinet21.oracle.com [66.248.204.29] X-CT-RefId: str=0001.0A090208.4E036DB6.015E:SCFSTAT5015188, ss=1, re=-6.300, fgs=0 X-Spam-Score: -5.8 (-----) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -5.8 (-----) This is a multi-part message in MIME format. ------=_NextPart_000_009E_01CC318A.4A571290 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit > I comment out the two lines > ;; (load-file "c:/drews-lisp-20/hexrgb.el") > ;; (load-file "c:/drews-lisp-20/fit-frame.el") > at the beginning of the file. I hope they are not needed. Yes, that was an oversight. They are not needed at all. > > Note: In the file, both of these two lines are necessary, > > to cause the error: > > (add-hook 'post-command-hook '1on1-fit-minibuffer-frame) > > (setq w32-grab-focus-on-raise nil) > > Both are in here. Yes, they are needed. > With the `post-command-hook' active, focus remains always within the > Minibuffer frame at the bottom of my screen, whatever silly I > type. The Completions frame is never selected. So lets hope > this got fixed. > > I attach a copy of window.el as usual. If you think that > hexrgb and/or fit-frame are needed for showing the bug, > please tell me so. (No, those files are not needed. You can remove those two lines.) Testing with the latest window.el you just sent, here are the results: THE GOOD NEWS: With the last setup we both tried, no bug! That is: runemacs.exe -Q --debug-init -l "window-2011-06-23a-MARTIN.el" -l "throw-three.el" -f "1on1-emacs" THE BAD NEWS: So I pared down again. The bug happens if you make just this change in the definition of `1on1-emacs': Change these lines: (if 1on1-minibuffer-frame (modify-frame-parameters 1on1-minibuffer-frame 1on1-minibuffer-frame-alist) (setq 1on1-minibuffer-frame (make-frame 1on1-minibuffer-frame-alist))) To these, which is really what I use: (if 1on1-minibuffer-frame (modify-frame-parameters 1on1-minibuffer-frame 1on1-minibuffer-frame-alist) (setq 1on1-minibuffer-frame (let ((after-make-frame-functions nil)) (make-frame 1on1-minibuffer-frame-alist)))) IOW, the difference is that `after-make-frame-functions' is bound to nil when `make-frame' is called. I do that to inhibit my `fit-frame' from doing anything. I have `fit-frame' on `after-make-frame-functions'. I attached the file - just do as before, using this instead of throw-three.el. I can try removing just `fit-frame' from that hook and then restoring it. But I think I shouldn't have to. I think that correct behavior should not depend on `after-make-frame-functions'. Don't you agree? Can you please take a look and see why and whether it is necessary that a user _not_ bind `after-make-frame-functions' to nil here? Why should `after-make-frame-functions' have any effect on whether keyboard input for *Completions* gets properly redirected to the minibuffer frame? You don't use `after-make-frame-functions' in your code, do you? If so, that I think is probably a bad idea. Such hooks should be only for additional, user etc. things, not for necessary code for vanilla Emacs to work normally. Anyway, please let me know what you think. Give it a try with that `let' binding (just use the attached file), to confirm that you at least see the same problem as I. We can then worry about what to do to fix or work around the problem. Again, the problem happens only when the *Completions* is first created. What happens on MS Windows is that whenever a frame is created it gets selected (by the OS/window mgr - there is no way around this). And for some reason, I guess because of emptying `after-make-frame-functions', that Windows-frame-selection-on-creation is now also selecting the window/buffer, and in such a way that keyboard input is not being correctly redirected to the minibuffer frame. And as before (since you made some changes a few days ago), things do work correctly once the *Completions* frame has been created. If that frame is already showing and I repeat the recipe (M-x etc.) there is no problem. And that is true regardless of which frame is selected when I start with M-x: the *scratch* frame, the minibuffer frame, or even the *Completions* frame. When I hit M-x, the input is always correctly redirected to the minibuffer frame, so there is no error saying that *Completions* is read-only. (Again, this is when *Completions* was already showing.) I think (and hope) we are almost there. Something seems to be preventing the input-focus redirection just after the *Completions* frame is created, when `after-make-frame-functions' is nil. Thx - Drew ------=_NextPart_000_009E_01CC318A.4A571290 Content-Type: application/octet-stream; name="throw-fit-1.el" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="throw-fit-1.el" (setq debug-on-error t)=0A= =0A= ;;; Minibuffer frame: ********************************=0A= ;;;=0A= (defvar 1on1-minibuffer-frame nil "")=0A= =0A= (defcustom 1on1-minibuffer-frame-alist=0A= (list=0A= (assq 'foreground-color minibuffer-frame-alist)=0A= (or (assq 'background-color minibuffer-frame-alist)=0A= (cons 'background-color "LightBlue"))=0A= (assq 'font minibuffer-frame-alist)=0A= (assq 'mouse-color minibuffer-frame-alist)=0A= (assq 'cursor-color minibuffer-frame-alist)=0A= (or (assq 'menu-bar-lines minibuffer-frame-alist)=0A= (cons 'menu-bar-lines 0))=0A= (or (assq 'left minibuffer-frame-alist)=0A= (cons 'left 0))=0A= (or (assq 'height minibuffer-frame-alist)=0A= (cons 'height 2))=0A= (or (assq 'icon-type minibuffer-frame-alist)=0A= (cons 'icon-type (< emacs-major-version 21))) ; `t' for Emacs 21 = too?=0A= (or (assq 'minibuffer minibuffer-frame-alist)=0A= (cons 'minibuffer 'only))=0A= (or (assq 'user-position minibuffer-frame-alist)=0A= (cons 'user-position t))=0A= (or (assq 'vertical-scroll-bars minibuffer-frame-alist) ; No scroll = bar.=0A= (cons 'vertical-scroll-bars nil))=0A= (or (assq 'name minibuffer-frame-alist)=0A= (cons 'name "Emacs Minibuffer")))=0A= ""=0A= :type '(repeat (cons :format "%v" (symbol :tag "Frame Parameter") = (sexp :tag "Value")))=0A= :group 'One-On-One)=0A= =0A= ;;; *Completions* frame: ********************************=0A= (defcustom 1on1-default-frame-alist=0A= (list=0A= (assq 'foreground-color default-frame-alist)=0A= (or (assq 'background-color default-frame-alist)=0A= (cons 'background-color "LightBlue"))=0A= (assq 'font default-frame-alist)=0A= (assq 'mouse-color default-frame-alist)=0A= (assq 'cursor-color default-frame-alist)=0A= (assq 'cursor-type default-frame-alist)=0A= (or (assq 'menu-bar-lines default-frame-alist)=0A= (cons 'menu-bar-lines 1))=0A= (or (assq 'top default-frame-alist)=0A= (cons 'top 0))=0A= (or (assq 'left default-frame-alist)=0A= (cons 'left 0))=0A= (or (assq 'width default-frame-alist)=0A= (cons 'width 80))=0A= (or (assq 'height default-frame-alist)=0A= (cons 'height 35))=0A= (or (assq 'minibuffer default-frame-alist)=0A= (cons 'minibuffer nil))=0A= (or (assq 'user-position default-frame-alist)=0A= (cons 'user-position t))=0A= (or (assq 'vertical-scroll-bars default-frame-alist)=0A= (cons 'vertical-scroll-bars 'right))=0A= (or (assq 'icon-type default-frame-alist)=0A= (cons 'icon-type (< emacs-major-version 21))) ; `t' for Emacs 21 = too?=0A= (or (assq 'tool-bar-lines default-frame-alist)=0A= (cons 'tool-bar-lines 1)) ; Emacs 21+=0A= (if (cdr (assq 'left-fringe default-frame-alist))=0A= (assq 'left-fringe default-frame-alist)=0A= (cons 'left-fringe 0)) ; Emacs 21+=0A= (if (cdr (assq 'right-fringe default-frame-alist))=0A= (assq 'right-fringe default-frame-alist)=0A= (cons 'right-fringe 0)) ; Emacs 21+=0A= (or (assq 'fringe default-frame-alist)=0A= (cons 'fringe 0))) ; Emacs 21, but not 21.3.50 - = REMOVE after 22.x=0A= ""=0A= :type '(repeat (cons :format "%v" (symbol :tag "Frame Parameter") = (sexp :tag "Value")))=0A= :group 'frames)=0A= =0A= ;;; Special-display frames=0A= (defcustom 1on1-special-display-frame-alist=0A= (list=0A= (assq 'font special-display-frame-alist)=0A= (or (assq 'width special-display-frame-alist)=0A= (cons 'width 80))=0A= (or (assq 'height special-display-frame-alist)=0A= (cons 'height 20))=0A= (assq 'mouse-color special-display-frame-alist)=0A= (assq 'cursor-color special-display-frame-alist)=0A= (or (assq 'menu-bar-lines special-display-frame-alist)=0A= (cons 'menu-bar-lines 1))=0A= (assq 'foreground-color special-display-frame-alist)=0A= (or (assq 'background-color special-display-frame-alist)=0A= (cons 'background-color "LightSteelBlue"))=0A= (or (assq 'top special-display-frame-alist)=0A= (cons 'top 0))=0A= (or (assq 'left special-display-frame-alist)=0A= (cons 'left 0))=0A= (or (assq 'unsplittable special-display-frame-alist)=0A= (cons 'unsplittable t))=0A= (or (assq 'user-position special-display-frame-alist)=0A= (cons 'user-position t))=0A= (or (assq 'vertical-scroll-bars special-display-frame-alist)=0A= (cons 'vertical-scroll-bars 'right)))=0A= ""=0A= :type '(repeat (cons :format "%v" (symbol :tag "Frame Parameter") = (sexp :tag "Value")))=0A= :group 'frames)=0A= =0A= (defun 1on1-emacs ()=0A= ""=0A= (interactive)=0A= (unless (if (fboundp 'display-graphic-p) (display-graphic-p) = window-system)=0A= (error "Use `1on1-emacs' only with a graphics display, not with a = text terminal"))=0A= (setq default-frame-alist (append 1on1-default-frame-alist = default-frame-alist)=0A= special-display-frame-alist (append = 1on1-special-display-frame-alist=0A= special-display-frame-alist))=0A= (add-to-list ; *Help* frame=0A= 'special-display-buffer-names=0A= (list "*Help*" '1on1-display-*Help*-frame=0A= (list (cons 'background-color "Thistle")=0A= '(height . 40))))=0A= (add-to-list ; *Completions* frame=0A= 'special-display-buffer-names=0A= `("*Completions*" 1on1-display-*Completions*-frame=0A= ((background-color . "LavenderBlush2")=0A= (menu-bar-lines . 0) (tool-bar-lines . 0)=0A= (width . 100))))=0A= (setq pop-up-frames t)=0A= ;; Minibuffer frame=0A= (setq minibuffer-frame-alist (append 1on1-minibuffer-frame-alist=0A= minibuffer-frame-alist))=0A= =0A= (if 1on1-minibuffer-frame=0A= (modify-frame-parameters 1on1-minibuffer-frame = 1on1-minibuffer-frame-alist)=0A= (setq 1on1-minibuffer-frame=0A= (let ((after-make-frame-functions nil)) ; E.g. inhibit = `fit-frame'.=0A= (make-frame 1on1-minibuffer-frame-alist))))=0A= ;; (if 1on1-minibuffer-frame=0A= ;; (modify-frame-parameters 1on1-minibuffer-frame = 1on1-minibuffer-frame-alist)=0A= ;; (setq 1on1-minibuffer-frame=0A= ;; (make-frame 1on1-minibuffer-frame-alist)))=0A= (set-frame-width 1on1-minibuffer-frame 150)=0A= (modify-frame-parameters 1on1-minibuffer-frame `((top ,@ -50)))=0A= (setq minibuffer-auto-raise t)=0A= =0A= ;; Hooks.=0A= ;; @@@=0A= (add-hook 'post-command-hook '1on1-fit-minibuffer-frame)=0A= (setq w32-grab-focus-on-raise nil)=0A= ;; @@@=0A= )=0A= =0A= (defun 1on1-display-*Help*-frame (buf &optional args)=0A= ""=0A= (let (return-window)=0A= (setq return-window (select-window (funcall special-display-function = buf args)))=0A= (raise-frame)=0A= return-window))=0A= =0A= (defun 1on1-display-*Completions*-frame (buf &optional args)=0A= ""=0A= (let (return-window)=0A= (setq return-window (select-window (funcall special-display-function = buf args)))=0A= (raise-frame)=0A= (when (boundp '1on1-minibuffer-frame)=0A= (redirect-frame-focus (selected-frame) 1on1-minibuffer-frame))=0A= return-window))=0A= =0A= ;; @@@=0A= (defun 1on1-fit-minibuffer-frame ()=0A= ""=0A= (interactive)=0A= (when (and (active-minibuffer-window)=0A= (save-selected-window=0A= (select-window (minibuffer-window))=0A= (one-window-p nil 'selected-frame)))=0A= (let* ((frame (save-selected-window=0A= (select-window (minibuffer-window)) = (selected-frame)))=0A= (frame-height (frame-height frame)))=0A= (cond=0A= ((eq last-command '1on1-fit-minibuffer-frame)=0A= (set-frame-height frame (1+ (frame-height frame)))=0A= (modify-frame-parameters 1on1-minibuffer-frame `((top ,@ -50)))=0A= (condition-case nil (scroll-down (frame-height frame)) (error = nil)))=0A= (t=0A= (let ((window-min-height 2))=0A= (modify-frame-parameters 1on1-minibuffer-frame `((top ,@ = -50)))=0A= (condition-case nil (scroll-down (frame-height frame)) (error = nil))))))))=0A= =0A= ;; @@@=0A= =0A= =0C=0A= (load-file "c:/drews-lisp-20/window-2011-06-23a-MARTIN.el")=0A= ------=_NextPart_000_009E_01CC318A.4A571290-- From debbugs-submit-bounces@debbugs.gnu.org Thu Jun 23 18:07:10 2011 Received: (at 8856) by debbugs.gnu.org; 23 Jun 2011 22:07:10 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QZs3J-0004mP-Md for submit@debbugs.gnu.org; Thu, 23 Jun 2011 18:07:09 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QZs3H-0004m4-77 for 8856@debbugs.gnu.org; Thu, 23 Jun 2011 18:07:07 -0400 Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5NM6xga011491 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 23 Jun 2011 22:07:01 GMT Received: from acsmt358.oracle.com (acsmt358.oracle.com [141.146.40.158]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5NM6wjR000765 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 23 Jun 2011 22:06:59 GMT Received: from abhmt111.oracle.com (abhmt111.oracle.com [141.146.116.63]) by acsmt358.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5NM6r19017397; Thu, 23 Jun 2011 17:06:53 -0500 Received: from dradamslap1 (/10.159.61.188) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 23 Jun 2011 15:06:52 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFF1709.3010409@gmx.at><309F7428711D4BEBB6063C60808D8069@us.oracle.com><4E00C54C.5080108@gmx.at> <7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com> <31769215C0FF4E1E89F9F641C5843E91@us.oracle.com> <4E033CBA.1050700@gmx.at> <4E037708.2000205@gmx.at> Subject: RE: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated Date: Thu, 23 Jun 2011 15:06:51 -0700 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 Thread-Index: AcwxypDVvUTsaEziS02PYYS5lPKkhgAJlErg In-Reply-To: <4E037708.2000205@gmx.at> X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: acsinet22.oracle.com [141.146.126.238] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090207.4E03B905.0080:SCFMA922111,ss=1,re=-4.000,fgs=0 X-Spam-Score: -6.5 (------) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.5 (------) Martin, Please disregard my previous message from today completely. Dunno what I was seeing or thought I was seeing. Sorry for wasting your time (and mine) with that. I checked again, and the same test as before, with throw-three.el, does NOT work, i.e., the bug is still manifested. I tested again with both the window.el you sent yesterday and with the latest window.el you sent. Both have the same problem. runemacs.exe -Q --debug-init -l "window-2011-06-21a-MARTIN.el" -l "throw-three.el" -f "1on1-emacs" runemacs.exe -Q --debug-init -l "window-2011-06-23a-MARTIN.el" -l "throw-three.el" -f "1on1-emacs" Same recipe: M-x f TAB o When I hit the second char (`o') I get the read-only error for *Completions*. -- (FWIW, I also checked `after-make-frame-functions' and it was anyway nil in the tests I mentioned earlier, even without the `let' binding. All of that was just a wild goose chase.) From debbugs-submit-bounces@debbugs.gnu.org Fri Jun 24 04:53:32 2011 Received: (at 8856) by debbugs.gnu.org; 24 Jun 2011 08:53:32 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qa28p-0001Vq-Pz for submit@debbugs.gnu.org; Fri, 24 Jun 2011 04:53:32 -0400 Received: from mailout-de.gmx.net ([213.165.64.23]) by debbugs.gnu.org with smtp (Exim 4.69) (envelope-from ) id 1Qa28m-0001Vb-9c for 8856@debbugs.gnu.org; Fri, 24 Jun 2011 04:53:29 -0400 Received: (qmail invoked by alias); 24 Jun 2011 08:53:21 -0000 Received: from 62-47-63-189.adsl.highway.telekom.at (EHLO [62.47.63.189]) [62.47.63.189] by mail.gmx.net (mp009) with SMTP; 24 Jun 2011 10:53:21 +0200 X-Authenticated: #14592706 X-Provags-ID: V01U2FsdGVkX18swj5SFM8syqWMYR40FQRmfYTp50UTnqXG5GQ1DZ a4CEs24UTSbj/P Message-ID: <4E045081.3020009@gmx.at> Date: Fri, 24 Jun 2011 10:53:21 +0200 From: martin rudalics User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) MIME-Version: 1.0 To: Drew Adams Subject: Re: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFF1709.3010409@gmx.at><309F7428711D4BEBB6063C60808D8069@us.oracle.com><4E00C54C.5080108@gmx.at> <7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com> <31769215C0FF4E1E89F9F641C5843E91@us.oracle.com> <4E033CBA.1050700@gmx.at> <4E037708.2000205@gmx.at> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 X-Spam-Score: -2.5 (--) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -2.5 (--) > I checked again, and the same test as before, with throw-three.el, does NOT > work, i.e., the bug is still manifested. I tested again with both the window.el > you sent yesterday and with the latest window.el you sent. Both have the same > problem. > > runemacs.exe -Q --debug-init -l "window-2011-06-21a-MARTIN.el" -l > "throw-three.el" -f "1on1-emacs" > > runemacs.exe -Q --debug-init -l "window-2011-06-23a-MARTIN.el" -l > "throw-three.el" -f "1on1-emacs" > > Same recipe: M-x f TAB o > > When I hit the second char (`o') I get the read-only error for *Completions*. Note that apart from the (load-file "c:/drews-lisp-20/hexrgb.el") (load-file "c:/drews-lisp-20/fit-frame.el") the throw-three.el you sent me contains (load-file "c:/drews-lisp-20/window-2011-06-21a-MARTIN.el") which contains the old definitions which don't work in your case. I removed all three lines in my version. Apart from that I can see the following: If I do -f "1on1-emacs" from the command line I see the "bad" behavior. But I see the same behavior if I do -f "1on1-emacs" with an old Emacs that does NOT contain my changes. In both cases the *Completions* frame is selected. So please verify that this invocation DTRT with an old Emacs of yours. If I omit -f "1on1-emacs" from the command line and evaluate the expression (1on1-emacs) after my initial frame appeared I don't see the bad behavior. Please clarify these issues. Thanks, martin. From debbugs-submit-bounces@debbugs.gnu.org Fri Jun 24 17:21:48 2011 Received: (at 8856) by debbugs.gnu.org; 24 Jun 2011 21:21:48 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QaDox-0005sw-Lr for submit@debbugs.gnu.org; Fri, 24 Jun 2011 17:21:48 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QaDou-0005sj-8B for 8856@debbugs.gnu.org; Fri, 24 Jun 2011 17:21:45 -0400 Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5OLLaLQ005187 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 24 Jun 2011 21:21:38 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5OLLZoS021292 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 24 Jun 2011 21:21:36 GMT Received: from abhmt107.oracle.com (abhmt107.oracle.com [141.146.116.59]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5OLLUmZ032411; Fri, 24 Jun 2011 16:21:30 -0500 Received: from dradamslap1 (/10.159.59.236) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Fri, 24 Jun 2011 14:21:29 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFF1709.3010409@gmx.at><309F7428711D4BEBB6063C60808D8069@us.oracle.com><4E00C54C.5080108@gmx.at> <7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com> <31769215C0FF4E1E89F9F641C5843E91@us.oracle.com> <4E033CBA.1050700@gmx.at> <4E037708.2000205@gmx.at> <4E045081.3020009@gmx.at> Subject: RE: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated Date: Fri, 24 Jun 2011 14:21:31 -0700 Message-ID: <90A40DD7F1B14BC1BE282ADB68D57511@us.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0071_01CC327A.0455C2F0" X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <4E045081.3020009@gmx.at> Thread-Index: AcwyTDCHzo+IDuUWT7uetViV0s1W3QAYOT7g X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: acsinet22.oracle.com [141.146.126.238] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090202.4E04FFE2.005D:SCFMA922111,ss=1,re=-6.300,fgs=0 X-Spam-Score: -5.8 (-----) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -5.8 (-----) This is a multi-part message in MIME format. ------=_NextPart_000_0071_01CC327A.0455C2F0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Martin, OK, I believe I've located the problem. Sorry for all of the confusion. However, this is not necessarily simple, and you will need to load more in order to see it. I spent a lot of time on this today, but I cannot easily simplify things more. I think you will need to look at it first, and then we'll see what we can do together to focus in more on the problem. But I suspect that just by looking at the problematic part of the code you will be able to offer a suggestion that will fix things. Hope so. I call `display-buffer' with the old calling sequence, and that, I imagine, is the problem. With a little luck you will be able to let me know what the correction should be, and that will take care of things. You might be able to do that without bothering to test at all - see the end of this message. But I suspect it might help you to see what happens, even so. I have tested this with Emacs 23.3 and with your latest window.el (Emacs 24 build from 6/20). Here is the startup. File throw-10.el is attached. It loads Icicles. runemacs.exe -Q --debug-init -l "window-2011-06-23a-MARTIN.el" -l "throw-10.el" -f "1on1-emacs" (For Emacs 23, the startup is the same, but without the -l of your window.el file.) Once Emacs is started, you can test as before: `M-x f TAB o'. But to see the problem you need to be in Icicle mode, so do this first: `M-x icy-mode' (toggles the mode). You can thus test with and without Icicle mode to see the difference. With Emacs 23, both in and out of Icicle mode work. With your code it works only when not in Icicle mode. -- You will need to download all of the Icicles source files for the test. The attached file, throw-10.el, loads them all, but it also then simplifies the part of the code that I think is leading to the problem. So the code you actually need to look at is, I think, quite focused. These are the Icicles files, and the place to get them: http://www.emacswiki.org/cgi-bin/wiki?action=index;match=%5C.(el%7Ctar)(%5C.gz)% 3F%24 icicles-mac.el icicles-face.el icicles-opt.el icicles-var.el icicles-fn.el icicles-mcmd.el icicles-cmd1.el icicles-cmd2.el icicles-mode.el icicles.el The code to focus on is, I believe, in test-10.el, function `icicle-display-candidates-in-Completions'. (This function is called a lot, in many Icicles contexts.) This is the part of the code that I think is problematic - marked with a `@@@@@@@' comment: (let ((comp-buf (get-buffer-create "*Completions*"))) (unless (get-buffer-window comp-buf 'visible) (save-selected-window (display-buffer comp-buf t 0) ; <== the problem, no doubt (deactivate-mark)))) This calls `display-buffer', but it uses the old calling sequence, which I'm guessing is the problem. The point of this code is just to visit display the buffer and deactivate the mark there. Again, sorry for the amount of work. Hoping this will help. Thx - Drew ------=_NextPart_000_0071_01CC327A.0455C2F0 Content-Type: application/octet-stream; name="throw-10.el" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="throw-10.el" (setq debug-on-error t)=0A= =0A= (load-file "c:/drews-lisp-20/icicles-mac.el")=0A= (load-file "c:/drews-lisp-20/icicles-face.el")=0A= (load-file "c:/drews-lisp-20/icicles-opt.el")=0A= (load-file "c:/drews-lisp-20/icicles-var.el")=0A= (load-file "c:/drews-lisp-20/icicles-fn.el")=0A= (load-file "c:/drews-lisp-20/icicles-mcmd.el")=0A= (load-file "c:/drews-lisp-20/icicles-cmd1.el")=0A= (load-file "c:/drews-lisp-20/icicles-cmd2.el")=0A= (load-file "c:/drews-lisp-20/icicles-mode.el")=0A= (load-file "c:/drews-lisp-20/icicles.el")=0A= =0A= ;; (when (fboundp 'icicle-mode) (icicle-mode 1))=0A= =0A= ;; Pared down.=0A= (defun icicle-display-candidates-in-Completions (&optional reverse-p = no-display-p)=0A= ""=0A= (setq icicle-incremental-completion-p = icicle-incremental-completion-flag)=0A= (when (and (eq t icicle-incremental-completion-p) (get-buffer-window = "*Completions*" 0))=0A= (setq icicle-incremental-completion-p 'always))=0A= (let ((nb-cands (length icicle-completion-candidates)))=0A= (cond ((eq no-display-p 'no-msg)) ; No-op.=0A= (no-display-p) ; Simplified for test.=0A= ((null icicle-completion-candidates) ; Simplified for test.=0A= (save-selected-window (icicle-remove-Completions-window)))=0A= (t=0A= ;; @@@ THIS SEEMS TO BE WHERE THE PROBLEM IS = @@@@@@@@@@@@@@@@@@@=0A= (when (consp icicle-completion-candidates)=0A= (let ((comp-buf (get-buffer-create "*Completions*")))=0A= (unless (get-buffer-window comp-buf 'visible)=0A= ;; Remove any leftover mouse selection.=0A= (save-selected-window=0A= (display-buffer comp-buf t 0) ; <=3D=3D the problem, = no doubt=0A= (deactivate-mark)))))=0A= ;; = @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=0A= =0A= (with-output-to-temp-buffer "*Completions*"=0A= ;; The `condition-case' shouldn't be needed, but it = prevents an=0A= ;; "End of buffer" message from `display-completion-list' = on Emacs 22.=0A= (condition-case nil=0A= (display-completion-list=0A= (if reverse-p (reverse icicle-completion-candidates)=0A= icicle-completion-candidates))=0A= (error nil)))=0A= (message nil)))))=0A= =0A= ;; Make these functions into no-ops, to simplify things a bit.=0A= (defun icicle-activate-mark () "" nil)=0A= (defun icicle-cancel-Help-redirection () "" nil)=0A= (defun icicle-restore-region-face () "" nil)=0A= (defun icicle-unhighlight-lighter () "" nil)=0A= (defun icicle-fit-completions-window (&optional arg) "" nil)=0A= =0A= ;---------------------------------=0A= =0A= =0A= ;;; Minibuffer frame=0A= (defvar 1on1-minibuffer-frame nil "")=0A= =0A= (defcustom 1on1-minibuffer-frame-alist=0A= (list=0A= (assq 'foreground-color minibuffer-frame-alist)=0A= (or (assq 'background-color minibuffer-frame-alist)=0A= (cons 'background-color "LightBlue"))=0A= (assq 'font minibuffer-frame-alist)=0A= (assq 'mouse-color minibuffer-frame-alist)=0A= (assq 'cursor-color minibuffer-frame-alist)=0A= (or (assq 'menu-bar-lines minibuffer-frame-alist)=0A= (cons 'menu-bar-lines 0))=0A= (or (assq 'left minibuffer-frame-alist)=0A= (cons 'left 0))=0A= (or (assq 'height minibuffer-frame-alist)=0A= (cons 'height 2))=0A= (or (assq 'icon-type minibuffer-frame-alist)=0A= (cons 'icon-type (< emacs-major-version 21)))=0A= (or (assq 'minibuffer minibuffer-frame-alist)=0A= (cons 'minibuffer 'only))=0A= (or (assq 'user-position minibuffer-frame-alist)=0A= (cons 'user-position t))=0A= (or (assq 'vertical-scroll-bars minibuffer-frame-alist)=0A= (cons 'vertical-scroll-bars nil))=0A= (or (assq 'name minibuffer-frame-alist)=0A= (cons 'name "Emacs Minibuffer")))=0A= ""=0A= :type '(repeat (cons :format "%v"=0A= (symbol :tag "Frame Parameter")=0A= (sexp :tag "Value")))=0A= :group 'One-On-One)=0A= =0A= ;;; *Completions* frame=0A= (defcustom 1on1-default-frame-alist=0A= (list=0A= (assq 'foreground-color default-frame-alist)=0A= (or (assq 'background-color default-frame-alist)=0A= (cons 'background-color "LightBlue"))=0A= (assq 'font default-frame-alist)=0A= (assq 'mouse-color default-frame-alist)=0A= (assq 'cursor-color default-frame-alist)=0A= (assq 'cursor-type default-frame-alist)=0A= (or (assq 'menu-bar-lines default-frame-alist)=0A= (cons 'menu-bar-lines 1))=0A= (or (assq 'top default-frame-alist)=0A= (cons 'top 0))=0A= (or (assq 'left default-frame-alist)=0A= (cons 'left 0))=0A= (or (assq 'width default-frame-alist)=0A= (cons 'width 80))=0A= (or (assq 'height default-frame-alist)=0A= (cons 'height 35))=0A= (or (assq 'minibuffer default-frame-alist)=0A= (cons 'minibuffer nil))=0A= (or (assq 'user-position default-frame-alist)=0A= (cons 'user-position t))=0A= (or (assq 'vertical-scroll-bars default-frame-alist)=0A= (cons 'vertical-scroll-bars 'right))=0A= (or (assq 'icon-type default-frame-alist)=0A= (cons 'icon-type (< emacs-major-version 21)))=0A= (or (assq 'tool-bar-lines default-frame-alist)=0A= (cons 'tool-bar-lines 1))=0A= (if (cdr (assq 'left-fringe default-frame-alist))=0A= (assq 'left-fringe default-frame-alist)=0A= (cons 'left-fringe 0))=0A= (if (cdr (assq 'right-fringe default-frame-alist))=0A= (assq 'right-fringe default-frame-alist)=0A= (cons 'right-fringe 0))=0A= (or (assq 'fringe default-frame-alist)=0A= (cons 'fringe 0)))=0A= ""=0A= :type '(repeat (cons :format "%v"=0A= (symbol :tag "Frame Parameter")=0A= (sexp :tag "Value")))=0A= :group 'frames)=0A= =0A= ;;; Special-display frames=0A= (defcustom 1on1-special-display-frame-alist=0A= (list=0A= (assq 'font special-display-frame-alist)=0A= (or (assq 'width special-display-frame-alist)=0A= (cons 'width 80))=0A= (or (assq 'height special-display-frame-alist)=0A= (cons 'height 20))=0A= (assq 'mouse-color special-display-frame-alist)=0A= (assq 'cursor-color special-display-frame-alist)=0A= (or (assq 'menu-bar-lines special-display-frame-alist)=0A= (cons 'menu-bar-lines 1))=0A= (assq 'foreground-color special-display-frame-alist)=0A= (or (assq 'background-color special-display-frame-alist)=0A= (cons 'background-color "LightSteelBlue"))=0A= (or (assq 'top special-display-frame-alist)=0A= (cons 'top 0))=0A= (or (assq 'left special-display-frame-alist)=0A= (cons 'left 0))=0A= (or (assq 'unsplittable special-display-frame-alist)=0A= (cons 'unsplittable t))=0A= (or (assq 'user-position special-display-frame-alist)=0A= (cons 'user-position t))=0A= (or (assq 'vertical-scroll-bars special-display-frame-alist)=0A= (cons 'vertical-scroll-bars 'right)))=0A= ""=0A= :type '(repeat (cons :format "%v"=0A= (symbol :tag "Frame Parameter")=0A= (sexp :tag "Value")))=0A= :group 'frames)=0A= =0A= ;; Pared down.=0A= (defun 1on1-emacs ()=0A= ""=0A= (interactive)=0A= (setq default-frame-alist (append 1on1-default-frame-alist = default-frame-alist)=0A= special-display-frame-alist (append = 1on1-special-display-frame-alist=0A= special-display-frame-alist))=0A= (add-to-list ; *Help* frame=0A= 'special-display-buffer-names=0A= (list "*Help*" '1on1-display-*Help*-frame=0A= (list (cons 'background-color "Thistle")=0A= '(height . 40))))=0A= (add-to-list ; *Completions* frame=0A= 'special-display-buffer-names=0A= `("*Completions*" 1on1-display-*Completions*-frame=0A= ((background-color . "LavenderBlush2")=0A= (menu-bar-lines . 0) (tool-bar-lines . 0)=0A= (width . 100))))=0A= (setq pop-up-frames t)=0A= ;; Minibuffer frame=0A= (setq minibuffer-frame-alist (append 1on1-minibuffer-frame-alist=0A= minibuffer-frame-alist))=0A= (if 1on1-minibuffer-frame=0A= (modify-frame-parameters 1on1-minibuffer-frame = 1on1-minibuffer-frame-alist)=0A= (setq 1on1-minibuffer-frame=0A= (make-frame 1on1-minibuffer-frame-alist)))=0A= (set-frame-width 1on1-minibuffer-frame 150)=0A= (modify-frame-parameters 1on1-minibuffer-frame `((top ,@ -50)))=0A= (setq minibuffer-auto-raise t)=0A= ;;; (if foobar=0A= ;;; (add-hook 'post-command-hook '1on1-fit-minibuffer-frame)=0A= ;;; (remove-hook 'post-command-hook '1on1-fit-minibuffer-frame))=0A= (setq w32-grab-focus-on-raise nil))=0A= =0A= ;; Pared down.=0A= (defun 1on1-display-*Help*-frame (buf &optional args)=0A= ""=0A= (let (return-window)=0A= (setq return-window (select-window (funcall special-display-function = buf args)))=0A= (raise-frame)=0A= return-window))=0A= =0A= ;; Pared down.=0A= (defun 1on1-display-*Completions*-frame (buf &optional args)=0A= ""=0A= (let (return-window)=0A= (setq return-window (select-window (funcall special-display-function = buf args)))=0A= (raise-frame)=0A= (when (boundp '1on1-minibuffer-frame)=0A= (redirect-frame-focus (selected-frame) 1on1-minibuffer-frame))=0A= return-window))=0A= =0A= ;; Pared down.=0A= (defun 1on1-set-minibuffer-frame-top/bottom ()=0A= ""=0A= (when (boundp '1on1-minibuffer-frame)=0A= (condition-case nil (redisplay t) (error nil))=0A= (modify-frame-parameters 1on1-minibuffer-frame '((top . -50)))))=0A= =0A= ;; Pared down.=0A= (defun 1on1-fit-minibuffer-frame ()=0A= ""=0A= (interactive)=0A= ;; (unless (require 'fit-frame nil t)=0A= ;; (error "You need to load library `fit-frame.el' to use this = command"))=0A= (when (and (active-minibuffer-window)=0A= (save-selected-window=0A= (select-window (minibuffer-window))=0A= (one-window-p nil 'selected-frame)))=0A= (let* ((frame (save-selected-window=0A= (select-window (minibuffer-window)) = (selected-frame)))=0A= (frame-height (frame-height frame)))=0A= (cond=0A= ((eq last-command '1on1-fit-minibuffer-frame)=0A= (set-frame-height frame (1+ (frame-height frame)))=0A= (1on1-set-minibuffer-frame-top/bottom)=0A= (condition-case nil (scroll-down (frame-height frame)) (error = nil)))=0A= (t=0A= (let* ((beg = (minibuffer-prompt-end))=0A= (fit-frame-max-height nil)=0A= (fit-frame-max-height-percent 10)=0A= (fit-frame-min-height 2)=0A= (window-min-height 2)=0A= (fit-frame-empty-height 2)=0A= (fit-frame-empty-special-display-height 2))=0A= (fit-frame frame (frame-width frame))=0A= (1on1-set-minibuffer-frame-top/bottom)=0A= (condition-case nil (scroll-down (frame-height frame)) (error = nil))))))))=0A= ------=_NextPart_000_0071_01CC327A.0455C2F0-- From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 25 10:15:33 2011 Received: (at 8856) by debbugs.gnu.org; 25 Jun 2011 14:15:33 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QaTe0-00068e-Jh for submit@debbugs.gnu.org; Sat, 25 Jun 2011 10:15:33 -0400 Received: from mailout-de.gmx.net ([213.165.64.23]) by debbugs.gnu.org with smtp (Exim 4.69) (envelope-from ) id 1QaTdy-0005y0-1P for 8856@debbugs.gnu.org; Sat, 25 Jun 2011 10:15:31 -0400 Received: (qmail invoked by alias); 25 Jun 2011 14:15:23 -0000 Received: from 62-47-57-16.adsl.highway.telekom.at (EHLO [62.47.57.16]) [62.47.57.16] by mail.gmx.net (mp027) with SMTP; 25 Jun 2011 16:15:23 +0200 X-Authenticated: #14592706 X-Provags-ID: V01U2FsdGVkX1+q8Dtw1mOqoKSjB/hxkCi7m6Ckkwr4Lu9N8eoTIo QR1tYxTRTbKo/G Message-ID: <4E05ED7B.2070307@gmx.at> Date: Sat, 25 Jun 2011 16:15:23 +0200 From: martin rudalics User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) MIME-Version: 1.0 To: Drew Adams Subject: Re: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFF1709.3010409@gmx.at><309F7428711D4BEBB6063C60808D8069@us.oracle.com><4E00C54C.5080108@gmx.at> <7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com> <31769215C0FF4E1E89F9F641C5843E91@us.oracle.com> <4E033CBA.1050700@gmx.at> <4E037708.2000205@gmx.at> <4E045081.3020009@gmx.at> <90A40DD7F1B14BC1BE282ADB68D57511@us.oracle.com> In-Reply-To: <90A40DD7F1B14BC1BE282ADB68D57511@us.oracle.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 X-Spam-Score: -2.5 (--) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -2.5 (--) > These are the Icicles files, and the place to get them: > http://www.emacswiki.org/cgi-bin/wiki?action=index;match=%5C.(el%7Ctar)(%5C.gz)% > 3F%24 > > icicles-mac.el > icicles-face.el > icicles-opt.el > icicles-var.el > icicles-fn.el > icicles-mcmd.el > icicles-cmd1.el > icicles-cmd2.el > icicles-mode.el > icicles.el It's a pain to get ten files from there one by one. Can't you pack them and send them in an attachment together with the throw-... file? I suppose you have them in one and the same directory and a thing like 7-zip around. So this should be much easier for you ... > (let ((comp-buf (get-buffer-create "*Completions*"))) > (unless (get-buffer-window comp-buf 'visible) > (save-selected-window > (display-buffer comp-buf t 0) ; <== the problem, no doubt > (deactivate-mark)))) Could you explain what you think that happens, happens instead, or does not happen here? "0" won't do anything `display-buffer' without that argument would not have done anyway: Search all visible and iconified frames for a window showing comp-buf. Maybe there are reasons why this argument is needed and I should put back its semantics but I never found one and don't find one here. IIUC the code tests whether it finds a visible window showing comp-buf. If it doesn't, either because the window doesn't exist or is not visible, it tries to get one on an iconified frame or make a new frame and deactivate the mark there. So you probably raise the frame of com-buf and then want to redirect focus from the comp-buf window to your minibuffer window which probably was selected here, and finally you reselect the minibuffer window because of the `save-selected-window'. But for some reason the comp-buf window remains selected. Is it that what you see? Note: In all examples you sent me before you didn't have a thing like `save-selected-window' around a `display-buffer' call. martin From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 25 10:52:28 2011 Received: (at 8856) by debbugs.gnu.org; 25 Jun 2011 14:52:28 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QaUDk-0008WG-4A for submit@debbugs.gnu.org; Sat, 25 Jun 2011 10:52:28 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QaUDh-0008W2-Eh for 8856@debbugs.gnu.org; Sat, 25 Jun 2011 10:52:26 -0400 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5PEqH4h028720 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 25 Jun 2011 14:52:19 GMT Received: from acsmt356.oracle.com (acsmt356.oracle.com [141.146.40.156]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5PEqGEH021406 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 25 Jun 2011 14:52:17 GMT Received: from abhmt107.oracle.com (abhmt107.oracle.com [141.146.116.59]) by acsmt356.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5PEqBJe013878; Sat, 25 Jun 2011 09:52:11 -0500 Received: from dradamslap1 (/10.159.51.167) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sat, 25 Jun 2011 07:52:11 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFF1709.3010409@gmx.at><309F7428711D4BEBB6063C60808D8069@us.oracle.com><4E00C54C.5080108@gmx.at> <7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com> <31769215C0FF4E1E89F9F641C5843E91@us.oracle.com> <4E033CBA.1050700@gmx.at> <4E037708.2000205@gmx.at> <4E045081.3020009@gmx.at> <90A40DD7F1B14BC1BE282ADB68D57511@us.oracle.com> <4E05ED7B.2070307@gmx.at> Subject: RE: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated Date: Sat, 25 Jun 2011 07:52:01 -0700 Message-ID: <4023AF2C90A24208ABCC1644CB15F776@us.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <4E05ED7B.2070307@gmx.at> Thread-Index: AcwzQlfAMh1oVSFdRiGfhJdbZCfQvQAAJHzw X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090204.4E05F623.0044:SCFMA922111,ss=1,re=-4.000,fgs=0 X-Spam-Score: -6.5 (------) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.5 (------) > It's a pain to get ten files from there one by one. Can't > you pack them and send them in an attachment together with > the throw-... file? I suppose you have them in one and the > same directory and a thing like 7-zip around. So this > should be much easier for you ... There are several bulk download methods for Icicles, if you feel that right-clicking 10 times is onerous: http://www.emacswiki.org/cgi-bin/wiki/Icicles_-_Libraries#toc5 Try one of the 3 download scripts (see the first two bullets). If you don't like any of the bulk download methods then I will send a 7zip archive to you by mail - let me know. > > (let ((comp-buf (get-buffer-create "*Completions*"))) > > (unless (get-buffer-window comp-buf 'visible) > > (save-selected-window > > (display-buffer comp-buf t 0) ; <== the problem, no doubt > > (deactivate-mark)))) > > Could you explain what you think that happens, happens > instead, or does not happen here? "0" won't do anything > `display-buffer' without that argument would not have done > anyway: Search all visible and iconified frames for a window > showing comp-buf. (Again, to be sure we're on the same page, this is a call to `display-buffer' for Emacs prior to your changes. Perhaps I need to modify it now, for Emacs 24+.) The code above is Icicles code. Icicles does not require users to use non-nil `pop-up-frames' (and most do not probably). In my own, personal setup I use non-nil `pop-up-frames', but this code needs to work with any value of that option. You are the expert on `display-buffer', but this is my understanding. From the `display-buffer' doc string: Emacs 20: If FRAME is 0, search all visible and iconified frames. If FRAME is nil, search only the selected frame (actually the last nonminibuffer frame), unless `pop-up-frames' is non-nil, which means search visible and iconified frames. Emacs 22 says the same, but it adds "or `display-buffer-reuse-frames'" to `pop-up-frames'. Emacs 23 and Emacs 24 before your changes say the same as Emacs 22, but they distinguish the `graphic-only' case of non-nil for pop-up-frames. The Elisp manual says essentially the same thing. The Emacs 23.3 manual says only this about a nil value for FRAME (but it then lists a long page of other options that also affect the behavior of `display-buffer'). `nil' means consider windows on the selected frame. (Actually, the last non-minibuffer frame.) IIUC, in the above code, I do not want nil for FRAME, because I do not want only the selected frame checked for a *Completions* window. > Maybe there are reasons why this argument is needed and I > should put back its semantics but I never found one and > don't find one here. Do you see one now? Am I missing something? > IIUC the code tests whether it finds a visible window showing > comp-buf. If it doesn't, either because the window doesn't > exist or is not visible, it tries to get one on an iconified > frame or make a new frame New window, not new frame - no? Unless `pop-up-frames is non-nil etc. Again, please keep in mind that this is general code for users with all possible values of `pop-up-frames' etc. > and deactivate the mark there. So you probably raise the frame of > com-buf and then want to redirect focus from the comp-buf > window to your > minibuffer window which probably was selected here, and finally you > reselect the minibuffer window because of the `save-selected-window'. > But for some reason the comp-buf window remains selected. Is it that > what you see? I guess so. I don't know about the explanation of why, but yes, as I described earlier, for some reason the new *Completions* frame is getting the input (keyboard) focus. It is supposed to be a frame that always has its keyboard input redirected to the minibuffer frame. I suspect it's better to concentrate on the problem of input focus rather than speaking only in terms of window/frame selection. The new *Completions* frame _appears_ selected even prior to your changes (as shown by the window mgr border color, for instance), but the input focus is always correctly redirected to the minibuffer frame. That is the change (problem): the keyboard input focus. It seems (symptom, not explanation) as if the frame is no longer being correctly redirected, in terms of input focus. > Note: In all examples you sent me before you didn't have a thing like > `save-selected-window' around a `display-buffer' call. Not sure what you're saying there. Is that not a good idea? Thx - Drew From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 25 11:05:00 2011 Received: (at 8856) by debbugs.gnu.org; 25 Jun 2011 15:05:00 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QaUPr-00017t-S2 for submit@debbugs.gnu.org; Sat, 25 Jun 2011 11:05:00 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QaUPq-00017h-9u for 8856@debbugs.gnu.org; Sat, 25 Jun 2011 11:04:58 -0400 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5PF4opG005868 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 25 Jun 2011 15:04:52 GMT Received: from acsmt358.oracle.com (acsmt358.oracle.com [141.146.40.158]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5PF4nnG029572 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 25 Jun 2011 15:04:50 GMT Received: from abhmt108.oracle.com (abhmt108.oracle.com [141.146.116.60]) by acsmt358.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5PF4iJG023721; Sat, 25 Jun 2011 10:04:44 -0500 Received: from dradamslap1 (/10.159.51.167) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sat, 25 Jun 2011 08:04:43 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFF1709.3010409@gmx.at><309F7428711D4BEBB6063C60808D8069@us.oracle.com><4E00C54C.5080108@gmx.at><7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com><31769215C0FF4E1E89F9F641C5843E91@us.oracle.com><4E033CBA.1050700@gmx.at><4E037708.2000205@gmx.at><4E045081.3020009@gmx.at><90A40DD7F1B14BC1BE282ADB68D57511@us.oracle.com><4E05ED7B.2070307@gmx.at> <4023AF2C90A24208ABCC1644CB15F776@us.oracle.com> Subject: RE: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated Date: Sat, 25 Jun 2011 08:04:34 -0700 Message-ID: <8A3D5626004B4945A624B69463A0B849@us.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <4023AF2C90A24208ABCC1644CB15F776@us.oracle.com> Thread-Index: AcwzQlfAMh1oVSFdRiGfhJdbZCfQvQAAJHzwAAFX3FA= X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090201.4E05F914.00F4:SCFMA922111,ss=1,re=-4.000,fgs=0 X-Spam-Score: -6.5 (------) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.5 (------) To clarify some of what I said last - > for some reason the new *Completions* frame is getting > the input (keyboard) focus. It is supposed to be a > frame that always has its keyboard input redirected to > the minibuffer frame. > > I suspect it's better to concentrate on the problem of input > focus rather than speaking only in terms of window/frame > selection. Re-reading that, it sounds a bit misleading ("always"). It is of course also about which window/frame is selected (and a user can in fact change the input focus to *Completions*, via a minibuffer keymap key). I just meant that in this situation *Completions* should have the focus, and it does not. > The new *Completions* frame _appears_ selected even prior > to your changes (as shown by the window mgr border > color, for instance), but the input focus is always correctly > redirected to the minibuffer frame. That was all I was trying to say above wrt "selection". What counts here is that *Completions* is getting the input focus and it should not be getting it. From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 25 11:57:44 2011 Received: (at 8856) by debbugs.gnu.org; 25 Jun 2011 15:57:45 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QaVEu-0004a4-OB for submit@debbugs.gnu.org; Sat, 25 Jun 2011 11:57:44 -0400 Received: from mailout-de.gmx.net ([213.165.64.23]) by debbugs.gnu.org with smtp (Exim 4.69) (envelope-from ) id 1QaVEs-0004Zr-CF for 8856@debbugs.gnu.org; Sat, 25 Jun 2011 11:57:43 -0400 Received: (qmail invoked by alias); 25 Jun 2011 15:57:36 -0000 Received: from 62-47-34-133.adsl.highway.telekom.at (EHLO [62.47.34.133]) [62.47.34.133] by mail.gmx.net (mp001) with SMTP; 25 Jun 2011 17:57:36 +0200 X-Authenticated: #14592706 X-Provags-ID: V01U2FsdGVkX1/05IEtD0D05I8fFy7jG1LuZI2MhuT22gh+qNcPW+ TPnH1cAlzg2yDM Message-ID: <4E06056E.8030907@gmx.at> Date: Sat, 25 Jun 2011 17:57:34 +0200 From: martin rudalics User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) MIME-Version: 1.0 To: Drew Adams Subject: Re: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFF1709.3010409@gmx.at><309F7428711D4BEBB6063C60808D8069@us.oracle.com><4E00C54C.5080108@gmx.at><7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com><31769215C0FF4E1E89F9F641C5843E91@us.oracle.com><4E033CBA.1050700@gmx.at><4E037708.2000205@gmx.at><4E045081.3020009@gmx.at><90A40DD7F1B14BC1BE282ADB68D57511@us.oracle.com><4E05ED7B.2070307@gmx.at> <4023AF2C90A24208ABCC1644CB15F776@us.oracle.com> <8A3D5626004B4945A624B69463A0B849@us.oracle.com> In-Reply-To: <8A3D5626004B4945A624B69463A0B849@us.oracle.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 X-Spam-Score: -2.5 (--) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -2.5 (--) > That was all I was trying to say above wrt "selection". What counts here is > that *Completions* is getting the input focus and it should not be getting it. I downloaded your Icicles tarball and tried with throw-10. Everything seems to work as expected including focus redirection and resurrection of an iconified Completions frame. So if you don't use any additional strings the problem seems fixed. I can't tell why it doesn't work on your machine. Maybe some .el files have to be recompiled in order to work with my later fixes so it's likely best to wait till Sean uploads the new binaries (IIRC this happens every Monday). As soon as you tried with the new binaries tell me what you get. martin From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 25 12:15:53 2011 Received: (at 8856) by debbugs.gnu.org; 25 Jun 2011 16:15:54 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QaVWT-0006WG-2q for submit@debbugs.gnu.org; Sat, 25 Jun 2011 12:15:53 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QaVWR-0006W4-A1 for 8856@debbugs.gnu.org; Sat, 25 Jun 2011 12:15:52 -0400 Received: from rtcsinet22.oracle.com (rtcsinet22.oracle.com [66.248.204.30]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5PGFhFj027130 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 25 Jun 2011 16:15:45 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by rtcsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5PGFgGr000049 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 25 Jun 2011 16:15:42 GMT Received: from abhmt003.oracle.com (abhmt003.oracle.com [141.146.116.12]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5PGFaii002490; Sat, 25 Jun 2011 11:15:37 -0500 Received: from dradamslap1 (/10.159.51.167) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sat, 25 Jun 2011 09:15:36 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF65024.20305@gmx.at><0C191F638279437BADFCC697A5389F9E@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFF1709.3010409@gmx.at><309F7428711D4BEBB6063C60808D8069@us.oracle.com><4E00C54C.5080108@gmx.at><7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com><31769215C0FF4E1E89F9F641C5843E91@us.oracle.com><4E033CBA.1050700@gmx.at><4E037708.2000205@gmx.at><4E045081.3020009@gmx.at><90A40DD7F1B14BC1BE282ADB68D57511@us.oracle.com><4E05ED7B.2070307@gmx.at> <4023AF2C90A24208ABCC1644CB15F776@us.oracle.com> <8A3D5626004B4945A624B69463A0B849@us.oracle.com> <4E06056! E.8030907@gmx.at> Subject: RE: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated Date: Sat, 25 Jun 2011 09:15:25 -0700 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <4E06056E.8030907@gmx.at> Thread-Index: AcwzUJ9OXsU2Nb//T/+iA2ZQPvvjoQAAI+eQ X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: rtcsinet22.oracle.com [66.248.204.30] X-CT-RefId: str=0001.0A090208.4E0609B1.009A:SCFSTAT5015188, ss=1, re=-4.000, fgs=0 X-Spam-Score: -6.5 (------) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.5 (------) > I downloaded your Icicles tarball and tried with throw-10. Everything > seems to work as expected including focus redirection and resurrection > of an iconified Completions frame. There should be no iconfied Completions frame in the test I gave you. The problem arises only when the Completions frame is newly _created_, as I tried to explain. If you use `M-x f TAB o' (recipe) after the frame has already been created then the input focus is not a problem. If you have the frame already, then please delete it and try `M-x f TAB o' again. > So if you don't use any additional strings the problem seems > fixed. I can't tell why it doesn't work on your machine. As I said, it's possible that this is Windows-specific. Windows is I think (thought) a bit peculiar when it comes to its auto-selecting a new frame - but you said that most window mgrs do that now. I still wonder if this isn't Windows-specific, since you cannot reproduce it and it is systematic for me when I follow the same recipe. > Maybe some .el files have to be recompiled in order to work > with my later fixes Do you mean my .el or .el from Emacs sources? In the files I provided for the test, please use only .el, no .elc. > so it's likely best to wait till Sean uploads the new binaries > (IIRC this happens every Monday). As soon as you tried with > the new binaries tell me what you get. I'll certainly do that. But what about that `display-buffer' call in `icicle-display-candidates-in-Completions'? Can you suggest a change for it? Does that code look like it _should_ work after your changes, or should it be changed? And you mentioned the `save-selected-window' around that `display-buffer' call. Does that need to be changed somehow? From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 25 13:00:24 2011 Received: (at 8856) by debbugs.gnu.org; 25 Jun 2011 17:00:24 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QaWDX-0000wU-DC for submit@debbugs.gnu.org; Sat, 25 Jun 2011 13:00:24 -0400 Received: from mailout-de.gmx.net ([213.165.64.22]) by debbugs.gnu.org with smtp (Exim 4.69) (envelope-from ) id 1QaWDU-0000vz-BG for 8856@debbugs.gnu.org; Sat, 25 Jun 2011 13:00:21 -0400 Received: (qmail invoked by alias); 25 Jun 2011 17:00:13 -0000 Received: from 62-47-39-246.adsl.highway.telekom.at (EHLO [62.47.39.246]) [62.47.39.246] by mail.gmx.net (mp052) with SMTP; 25 Jun 2011 19:00:13 +0200 X-Authenticated: #14592706 X-Provags-ID: V01U2FsdGVkX18+NlNiYKw+mkrfvnnfuMvo1kfXYMmugxSDTdM2KQ CIp8NXDcfp9psm Message-ID: <4E06141D.80302@gmx.at> Date: Sat, 25 Jun 2011 19:00:13 +0200 From: martin rudalics User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) MIME-Version: 1.0 To: Drew Adams Subject: Re: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFF1709.3010409@gmx.at><309F7428711D4BEBB6063C60808D8069@us.oracle.com><4E00C54C.5080108@gmx.at><7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com><31769215C0FF4E1E89F9F641C5843E91@us.oracle.com><4E033CBA.1050700@gmx.at><4E037708.2000205@gmx.at><4E045081.3020009@gmx.at><90A40DD7F1B14BC1BE282ADB68D57511@us.oracle.com><4E05ED7B.2070307@gmx.at> <4023AF2C90A24208ABCC1644CB15F776@us.oracle.com> <8A3D5626004B4945A624B69463A0B849@us.oracle.com> <4E06056! E.8030907@gmx.at> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 X-Spam-Score: -2.5 (--) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -2.5 (--) >> I downloaded your Icicles tarball and tried with throw-10. Everything >> seems to work as expected including focus redirection and resurrection >> of an iconified Completions frame. > > There should be no iconfied Completions frame in the test I gave you. When I type foo and eventually get the sole completion footnote-mode the Completions frame iconifies automatically. I didn't check why that happens, shouldn't it? When I then type M-x f TAB again it gets orderly resurrected. > The problem arises only when the Completions frame is newly _created_, as I > tried to explain. If you use `M-x f TAB o' (recipe) after the frame has already > been created then the input focus is not a problem. > > If you have the frame already, The Completions frame? It pops up automatically when I hit TAB and redirects focus to the Minibuffer frame. > then please delete it and try `M-x f TAB o' > again. > >> So if you don't use any additional strings the problem seems >> fixed. I can't tell why it doesn't work on your machine. > > As I said, it's possible that this is Windows-specific. Windows is I think > (thought) a bit peculiar when it comes to its auto-selecting a new frame - but > you said that most window mgrs do that now. I still wonder if this isn't > Windows-specific, since you cannot reproduce it and it is systematic for me when > I follow the same recipe. But I test this on Windows XP. >> Maybe some .el files have to be recompiled in order to work >> with my later fixes > > Do you mean my .el or .el from Emacs sources? In the files I provided for the > test, please use only .el, no .elc. From the Emacs sources. Maybe some completions-related stuff. >> so it's likely best to wait till Sean uploads the new binaries >> (IIRC this happens every Monday). As soon as you tried with >> the new binaries tell me what you get. > > I'll certainly do that. OK. > But what about that `display-buffer' call in > `icicle-display-candidates-in-Completions'? Can you suggest a change for it? > Does that code look like it _should_ work after your changes, or should it be > changed? It should work vacuously. But I'd like to know why you needed it earlier. Earlier Emacsen had `display-buffer' do ((let ((frames (or frame here frame is the value "0" you provide as argument (and (or use-pop-up-frames display-buffer-reuse-frames (not (last-nonminibuffer-frame))) 0) and the "0" you see in the previous line means exactly the same. Any visible or iconified frame provided you use either `pop-up-frames' or `display-buffer-reuse-frames'. And I suppose it doesn't make sense to use Icicles with these set to nil. Now if you insisted on searching only visible frames here I would see a problem ... (last-nonminibuffer-frame)))) (setq window-to-use (catch 'found ;; Search frames for a window displaying BUFFER. Return ;; the selected window only if we are allowed to do so. (dolist (window (get-buffer-window-list buffer 'nomini frames)) (when (or can-use-selected-window (not (eq (selected-window) window))) (throw 'found window)))))) ;; The buffer is already displayed in some window; use that. (window--display-buffer-1 window-to-use)) I can easily resurrect the old semantics of that argument for the few values t, 0, visible and a live frame but I would first like to see a real use case for it. > And you mentioned the `save-selected-window' around that `display-buffer' call. > Does that need to be changed somehow? I'm not quite sure what you expect it to do. IIUC you want the Completions window selected with focus redirected to the Minibuffer window. Now which window is the one whose selection you want to save here? Anyway, it shouldn't harm so leave it alone. martin From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 25 13:49:20 2011 Received: (at 8856) by debbugs.gnu.org; 25 Jun 2011 17:49:20 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QaWyt-0004vt-PO for submit@debbugs.gnu.org; Sat, 25 Jun 2011 13:49:20 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QaWyr-0004vg-4X for 8856@debbugs.gnu.org; Sat, 25 Jun 2011 13:49:18 -0400 Received: from rtcsinet22.oracle.com (rtcsinet22.oracle.com [66.248.204.30]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5PHn9DF028951 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 25 Jun 2011 17:49:10 GMT Received: from acsmt358.oracle.com (acsmt358.oracle.com [141.146.40.158]) by rtcsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5PHn7Gf014419 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 25 Jun 2011 17:49:08 GMT Received: from abhmt007.oracle.com (abhmt007.oracle.com [141.146.116.16]) by acsmt358.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5PHn25A023323; Sat, 25 Jun 2011 12:49:02 -0500 Received: from dradamslap1 (/10.159.51.167) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sat, 25 Jun 2011 10:49:01 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DF726A1.7020804@gmx.at><8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFF1709.3010409@gmx.at><309F7428711D4BEBB6063C60808D8069@us.oracle.com><4E00C54C.5080108@gmx.at><7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com><31769215C0FF4E1E89F9F641C5843E91@us.oracle.com><4E033CBA.1050700@gmx.at><4E037708.2000205@gmx.at><4E045081.3020009@gmx.at><90A40DD7F1B14BC1BE282ADB68D57511@us.oracle.com><4E05ED7B.2070307@gmx.at> <4023AF2C90A24208ABCC1644CB15F776@us.oracle.com> <8A3D5626004B4945A624B69463A0B849@us.oracle.com> <4E06056! E.8030907@gmx.at> <4! E06141D.80302@gmx.at> Subject: RE: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated Date: Sat, 25 Jun 2011 10:48:52 -0700 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <4E06141D.80302@gmx.at> Thread-Index: AcwzWV/YGMZ5h7HGQveloFFFVJR3LAAAWxrQ X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: rtcsinet22.oracle.com [66.248.204.30] X-CT-RefId: str=0001.0A090208.4E061F97.004A:SCFSTAT5015188, ss=1, re=-4.000, fgs=0 X-Spam-Score: -6.5 (------) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.5 (------) > > There should be no iconfied Completions frame in the test > > I gave you. > > When I type foo and eventually get the sole completion > footnote-mode the Completions frame iconifies automatically. > I didn't check why that happens, shouldn't it? > When I then type M-x f TAB again it > gets orderly resurrected. Yes, that is all "normal" Emacs behavior. But that was not the recipe. 1. I don't think you are in Icicle mode when testing. Did you do `M-x icy-mode' at the start, to get in the mode? I mentioned that you can try the same test (starting from Emacs startup each time) both in and out of Icicle mode, to see the difference. If not in Icicle mode then you will not see the bug. 2. If you are in Icicle mode then you won't even get to `foo' after hitting `M-x f TAB'. After starting Emacs as I indicated and getting into Icicle mode, when you hit `M-x f TAB' the Completions frame is created and it incorrectly gets the input focus. When you then hit `o' you get the read-only error. It is important to test from scratch: no Completions frame or buffer, not even iconified. Then just type `M-x f TAB o'. Note that even in Emacs 23, where there is no such bug, when you complete to footnote-mode in Icicle mode the Completions frame is not iconified. It is instead deleted. If you are seeing iconification of Completions then you are not in Icicle mode, I think. You can easily tell when you are in Icicle mode by looking at the mode line - you will see `Icy' there. FYI - The Completions frame/window removal code is in file icicles-mcmd.el, function `icicle-remove-Completions-window', which calls `icicle-delete-windows-on'. In this case *Completions* is dedicated, and `delete-frame' is called. > > The problem arises only when the Completions frame is > > newly _created_, as I tried to explain. If you use > > `M-x f TAB o' (recipe) after the frame has already > > been created then the input focus is not a problem. > > > > If you have the frame already, > > The Completions frame? It pops up automatically when I hit TAB and > redirects focus to the Minibuffer frame. Yes, it should. > > then please delete it and try `M-x f TAB o' again. I was trying to direct you to follow the recipe, which starts with (a) Icicle mode and (b) _no_ Completions frame. Once the frame has been created you will not see the bug. See above for, I hope, clear instructions: Start Emacs again, get in Icicle mode, then hit `M-x f TAB o'. That's all there is to it. > But I test this on Windows XP. Ah, excellent. I'm on XP too, so we should be able to work this out. So far, it seems like you did not test in Icicle mode. Try that and see, please. > > But what about that `display-buffer' call in > > `icicle-display-candidates-in-Completions'? > > It should work vacuously. But I'd like to know why you > needed it earlier... And I suppose it doesn't make sense to > use Icicles with these set to nil. Yes, it does make sense! See my previous message. I tried to say clearly that Icicles has nothing to do with my personal setup where I use `pop-up-frames' etc. Icicles is a general package, and most of its users, I believe, do not use non-nil `pop-up-frames' - and most certainly don't use my oneonone.el setup. > I can easily resurrect the old semantics of that argument for the few > values t, 0, visible and a live frame but I would first like to see a > real use case for it. I have a real use case for it. See above. My code needs to work for users who have nil and users who have non-nil `pop-up-frames' etc. And see what I wrote wrt the `display-buffer' doc. For nil `pop-up-frames' etc. an argument of 0 is not at all the same as an argument of nil, according to the doc. Why do you think they added the 0 value? Why do you think it is superfluous? What am I missing here? > > And you mentioned the `save-selected-window' around that > > `display-buffer' call. Does that need to be changed somehow? > > I'm not quite sure what you expect it to do. IIUC you want the > Completions window selected with focus redirected to the Minibuffer > window. Now which window is the one whose selection you want to save > here? Anyway, it shouldn't harm so leave it alone. The selected window can I believe be any window, depending on the context. It could be the minibuffer window or another buffer window. It could (I think, without bothering to verify) even be the Completions window. Thanks for confirming that it does no harm - I will leave it. From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 26 09:50:20 2011 Received: (at 8856) by debbugs.gnu.org; 26 Jun 2011 13:50:20 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QapjA-0000A3-63 for submit@debbugs.gnu.org; Sun, 26 Jun 2011 09:50:20 -0400 Received: from mailout-de.gmx.net ([213.165.64.23]) by debbugs.gnu.org with smtp (Exim 4.69) (envelope-from ) id 1Qapj4-00009o-Gm for 8856@debbugs.gnu.org; Sun, 26 Jun 2011 09:50:17 -0400 Received: (qmail invoked by alias); 26 Jun 2011 13:50:05 -0000 Received: from 62-47-38-149.adsl.highway.telekom.at (EHLO [62.47.38.149]) [62.47.38.149] by mail.gmx.net (mp057) with SMTP; 26 Jun 2011 15:50:05 +0200 X-Authenticated: #14592706 X-Provags-ID: V01U2FsdGVkX19eezUYEApee/gunBy3n5z2C5QM1KOA2NPnYBZecr uygLQmtx7FGjWH Message-ID: <4E07390B.7030702@gmx.at> Date: Sun, 26 Jun 2011 15:50:03 +0200 From: martin rudalics User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) MIME-Version: 1.0 To: Drew Adams Subject: Re: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFF1709.3010409@gmx.at><309F7428711D4BEBB6063C60808D8069@us.oracle.com><4E00C54C.5080108@gmx.at><7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com><31769215C0FF4E1E89F9F641C5843E91@us.oracle.com><4E033CBA.1050700@gmx.at><4E037708.2000205@gmx.at><4E045081.3020009@gmx.at><90A40DD7F1B14BC1BE282ADB68D57511@us.oracle.com><4E05ED7B.2070307@gmx.at> <4023AF2C90A24208ABCC1644CB15F776@us.oracle.com> <8A3D5626004B4945A624B69463A0B849@us.oracle.com> <4E06056! E.8030907@gmx.at> <4! E06141D.80302@gmx.at> In-Reply-To: Content-Type: multipart/mixed; boundary="------------080703020003090907010305" X-Y-GMX-Trusted: 0 X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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 This is a multi-part message in MIME format. --------------080703020003090907010305 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit > 1. I don't think you are in Icicle mode when testing. > Did you do `M-x icy-mode' at the start, to get in the mode? No. > I mentioned that you can try the same test (starting from Emacs startup each > time) both in and out of Icicle mode, to see the difference. If not in Icicle > mode then you will not see the bug. > > 2. If you are in Icicle mode then you won't even get to `foo' after hitting `M-x > f TAB'. > > After starting Emacs as I indicated and getting into Icicle mode, when you hit > `M-x f TAB' the Completions frame is created and it incorrectly gets the input > focus. When you then hit `o' you get the read-only error. > > It is important to test from scratch: no Completions frame or buffer, not even > iconified. Then just type `M-x f TAB o'. I see it now. The Completions buffer pop ups up in a normal frame instead. > Note that even in Emacs 23, where there is no such bug, when you complete to > footnote-mode in Icicle mode the Completions frame is not iconified. It is > instead deleted. I attached a fixed copy of window.el, please try it. Completing now deletes the Completions frame. I also restored the old meaning of the third argument of `display-buffer' for the described frame values. martin --------------080703020003090907010305 Content-Type: application/zip; name="window.zip" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="window.zip" UEsDBBQAAgAIAG182j5YwTzGCP4AANN5BAAJAAAAd2luZG93LmVs7L37dxvHmSj4M/vcP6KX e3IBxAAtOcmeHflxV7blhHccySvJ481czwmbQJPsCEDD3Q1RzF+/37Pqq+rqBkjJTmau55yJ KXS966vv/fj000/z22q7qm/PynW+WCzyPz7/Pn+2KZat/J4v682m2K7avGirVZlfNfUm727q tsxvm6rrym1ebfOvsgxG+qre3TXV9U2XT7+a5Y//5f/+wxz/91/wf//lkwX8z+/n+SePHj1a fPLo8WPskeffNGWZv6qvutuiKfNv6v12VXRVvZ3n59vlGQ3756LadvD/ZfMk/+bVN/jTv5Z3 t3Wzap/A5F3ZbIs1/vpdsXxTXJdP8hI3QH1f31RtflWtyxz+uyuaLq+v/B55fL9lbIvraWU9 T/K7ep8vi23elKuq7Zrqct/BUF0OJ/Jx3eSbelVd3eEg8BssvWzgbMoclrRpcSb8Bw7/xxJW X6zz7/aX62qZf1styy2cYAFrwl/am3KVX9I42GP4TMoKvjf527Jp4d/573QOGXCe1w0OMi06 XHmT1zvsN4Pl3uXrovNdEzv3G1zhleKwN/UONnMDo8H2bqv1Or8s831bXu3Xc+wPjfMfzl// 6cX3r/Onz/+S//D05cunz1//BYEKYAS+lm9LHqra7NYVjAxbaoptdwcrp7t99vKrP0GXp1+e f3v++i+w/vyb89fPn716lX/z4mX+NP/u6cvX5199/+3Tl/l337/87sWrZ2d5/qrEZZW6hYHT vaILghNclQA+a7ntv8CNtrC29Sq/Kd6WcLPLsnoLKysA1Hd3h28NBynW9faaNmmAKc/Pr/Jt 3c3zFtb32U3X7Z58/PHt7e3Z9XZ/VjfXH695hPbjL2gt+GI2mxKAu7l7Qov7gd9chwBwtd8u 8fZa13ZVQqtp+bZYL25vyu0CnuYOQXvalD/tK9joZLmezaDJqryCFTV13sIOF225Lpdwqwt5 0dP/3pRtl1/Wq7tZluenz96VSwTrL198/Zc5bn6bcxc6iF1Tvq3qfbu+y3UgRRnZa/gOq9nj KXb7ZouQ01Iv/lXOcl3AdHAbG4QrnAV2RA/TL7LFF5XjuuDCeIhotjm+ltsSYLCg71n0Hccu i+UNvOBiU/JljK8/gxVs6xyvEh7GGoBAdn8LEA+A27iRW9+14FMpYbUAwbgZWPUGsJNvc8zc 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 ZWxQSwUGAAAAAAEAAQA3AAAAL/4AAAAA --------------080703020003090907010305-- From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 26 10:56:58 2011 Received: (at 8856) by debbugs.gnu.org; 26 Jun 2011 14:56:58 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qaqle-0004pv-CM for submit@debbugs.gnu.org; Sun, 26 Jun 2011 10:56:58 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qaqlc-0004pi-8J for 8856@debbugs.gnu.org; Sun, 26 Jun 2011 10:56:56 -0400 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5QEulIj023898 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 26 Jun 2011 14:56:49 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5QEulBR022847 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 26 Jun 2011 14:56:47 GMT Received: from abhmt002.oracle.com (abhmt002.oracle.com [141.146.116.11]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5QEugYJ015685; Sun, 26 Jun 2011 09:56:42 -0500 Received: from dradamslap1 (/10.159.51.223) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 26 Jun 2011 07:56:41 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFF1709.3010409@gmx.at><309F7428711D4BEBB6063C60808D8069@us.oracle.com><4E00C54C.5080108@gmx.at><7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com><31769215C0FF4E1E89F9F641C5843E91@us.oracle.com><4E033CBA.1050700@gmx.at><4E037708.2000205@gmx.at><4E045081.3020009@gmx.at><90A40DD7F1B14BC1BE282ADB68D57511@us.oracle.com><4E05ED7B.2070307@gmx.at> <4023AF2C90A24208ABCC1644CB15F776@us.oracle.com> <8A3D5626004B4945A624B69463A0B849@us.oracle.com> <4E06056! E.8030907@gmx.at> <4! E06141D.80302@gmx.at> ! <4E07390B.7030702@gmx .at> Subject: RE: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated Date: Sun, 26 Jun 2011 07:56:33 -0700 Message-ID: <7E36258F1C874F1199F2630002DC4915@us.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <4E07390B.7030702@gmx.at> Thread-Index: Acw0B/sn6ImPw3fzTG2zAyDzM98VCwABkG5g X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090205.4E0748B2.000A:SCFMA922111,ss=1,re=-4.000,fgs=0 X-Spam-Score: -6.5 (------) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.5 (------) > I see it now. The Completions buffer pop ups up in a normal > frame instead. I attached a fixed copy of window.el, please try it. > Completing now deletes the Completions frame. I also restored the > old meaning of the third argument of `display-buffer' for the > described frame values. Bravo! And thank you. Completions is now correctly redirected: no more read-only error. However, I now see this problem, which might or might not be due to this fix - dunno. It seems that the *Completions* window is still not a proper dedicated window, at least some of the time (?). `C-g' and `C-]' in Icicles during completion invoke `icicle-abort-recursive-edit' (in file icicles-mcmd.el), which does this: (if (not (active-minibuffer-window)) (when (get-buffer "*Completions*") (kill-buffer (get-buffer "*Completions*"))) (icicle-remove-Completions-window 'FORCE)) (abort-recursive-edit) This should remove the *Completions* window/frame. In the case in question, the second branch of the `if' is taken, invoking `icicle-remove-Completions-window' (which is also in file icicles-mcmd.el). What is happening now is that the first `C-g' does not remove Completions (e.g. delete the frame) - a second `C-g' is needed. Similarly, if you do `C-x 0' in the minibuffer it should remove Completions (it is bound to `icicle-remove-Completions-window'). That also does not work (no matter how many times you use it in a row). Here is what is happening, by `M-x debug-on-entry icicle-abort-recursive-edit'. Debugger entered--returning value: nil window-dedicated-p(#) * (if (window-dedicated-p (get-buffer-window "*Completions*" (quote visible))) (progn (condition-case nil (icicle-delete-windows-on "*Completions*") (error nil)))) * (when (window-dedicated-p (get-buffer-window "*Completions*" (quote visible))) (condition-case nil (icicle-delete-windows-on "*Completions*") (error nil))) * (cond ((and (get-buffer-window "*Completions*") (or force (and (window-live-p swin) (not (eq (window-buffer swin) (get-buffer "*Completions*")))) (interactive-p))) (condition-case nil (delete-window (get-buffer-window "*Completions*")) (error nil)) (bury-buffer (get-buffer "*Completions*"))) ((and (get-buffer-window "*Completions*" (quote visible)) (or force (and (window-live-p swin) (not (eq (window-buffer swin) (get-buffer "*Completions*")))) (interactive-p))) (when (window-dedicated-p (get-buffer-window "*Completions*" (quote visible))) (condition-case nil (icicle-delete-windows-on "*Completions*") (error nil))) (bury-buffer (get-buffer "*Completions*")))) * (let ((swin (selected-window))) (when (and (window-minibuffer-p swin) (fboundp (quote minibuffer-selected-window))) (setq swin (minibuffer-selected-window))) (cond ((and (get-buffer-window "*Completions*") (or force (and (window-live-p swin) (not (eq ... ...))) (interactive-p))) (condition-case nil (delete-window (get-buffer-window "*Completions*")) (error nil)) (bury-buffer (get-buffer "*Completions*"))) ((and (get-buffer-window "*Completions*" (quote visible)) (or force (and (window-live-p swin) (not (eq ... ...))) (interactive-p))) (when (window-dedicated-p (get-buffer-window "*Completions*" (quote visible))) (condition-case nil (icicle-delete-windows-on "*Completions*") (error nil))) (bury-buffer (get-buffer "*Completions*"))))) * icicle-remove-Completions-window(FORCE) * (if (not (active-minibuffer-window)) (when (get-buffer "*Completions*") (kill-buffer (get-buffer "*Completions*"))) (icicle-remove-Completions-window (quote FORCE))) icicle-abort-recursive-edit() call-interactively(icicle-abort-recursive-edit nil nil) Thx - Drew From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 26 11:16:12 2011 Received: (at 8856) by debbugs.gnu.org; 26 Jun 2011 15:16:12 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qar4F-0006nY-Vo for submit@debbugs.gnu.org; Sun, 26 Jun 2011 11:16:12 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qar4E-0006nN-BH for 8856@debbugs.gnu.org; Sun, 26 Jun 2011 11:16:11 -0400 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5QFG2fw007315 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 26 Jun 2011 15:16:04 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5QFG1Zh004604 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 26 Jun 2011 15:16:01 GMT Received: from abhmt107.oracle.com (abhmt107.oracle.com [141.146.116.59]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5QFFuUI024010; Sun, 26 Jun 2011 10:15:56 -0500 Received: from dradamslap1 (/10.159.51.223) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 26 Jun 2011 08:15:55 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DFB6BBF.3080504@gmx.at><6FAF5DFD0E094823A512C3E0E87B6DF5@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFF1709.3010409@gmx.at><309F7428711D4BEBB6063C60808D8069@us.oracle.com><4E00C54C.5080108@gmx.at><7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com><31769215C0FF4E1E89F9F641C5843E91@us.oracle.com><4E033CBA.1050700@gmx.at><4E037708.2000205@gmx.at><4E045081.3020009@gmx.at><90A40DD7F1B14BC1BE282ADB68D57511@us.oracle.com><4E05ED7B.2070307@gmx.at><4023AF2C90A24208ABCC1644CB15F776@us.oracle.com><8A3D5626004B4945A624B69463A0B849@us.oracle.com> <4E06056!E.8030907@gmx.at> <4!E06141D.80302@gmx.at> !<4E07! 390B.7030702@gmx .at> <7E36258F1C874F1199F2630002DC4915@us.oracle.com> Subject: RE: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated Date: Sun, 26 Jun 2011 08:15:48 -0700 Message-ID: <0721F495F4A441529FCB91280D284E42@us.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <7E36258F1C874F1199F2630002DC4915@us.oracle.com> Thread-Index: Acw0B/sn6ImPw3fzTG2zAyDzM98VCwABkG5gAADlx8A= X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090209.4E074D34.003E:SCFMA922111,ss=1,re=-4.000,fgs=0 X-Spam-Score: -6.5 (------) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.5 (------) > What is happening now is that the first `C-g' does not remove > Completions (e.g. delete the frame) - a second `C-g' is needed. And sometimes a second C-g does nothing either. And sometimes C-g replaces buffer *Completions* in its frame with another buffer (e.g. *scratch*), leaving the frame there. I don't have a recipe to reproduce these latter symptoms. But perhaps this is all due to the window not being dedicated. From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 26 11:54:44 2011 Received: (at 8856) by debbugs.gnu.org; 26 Jun 2011 15:54:44 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QarfY-0000hx-JA for submit@debbugs.gnu.org; Sun, 26 Jun 2011 11:54:44 -0400 Received: from mailout-de.gmx.net ([213.165.64.23]) by debbugs.gnu.org with smtp (Exim 4.69) (envelope-from ) id 1QarfW-0000hk-4U for 8856@debbugs.gnu.org; Sun, 26 Jun 2011 11:54:43 -0400 Received: (qmail invoked by alias); 26 Jun 2011 15:54:35 -0000 Received: from 62-47-38-149.adsl.highway.telekom.at (EHLO [62.47.38.149]) [62.47.38.149] by mail.gmx.net (mp023) with SMTP; 26 Jun 2011 17:54:35 +0200 X-Authenticated: #14592706 X-Provags-ID: V01U2FsdGVkX19WTHgglnNW0LwaVtCFf4R7jPrgok6AfKEMrQEb4h VucJh+mRnQBosS Message-ID: <4E07563A.3030704@gmx.at> Date: Sun, 26 Jun 2011 17:54:34 +0200 From: martin rudalics User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) MIME-Version: 1.0 To: Drew Adams Subject: Re: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFF1709.3010409@gmx.at><309F7428711D4BEBB6063C60808D8069@us.oracle.com><4E00C54C.5080108@gmx.at><7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com><31769215C0FF4E1E89F9F641C5843E91@us.oracle.com><4E033CBA.1050700@gmx.at><4E037708.2000205@gmx.at><4E045081.3020009@gmx.at><90A40DD7F1B14BC1BE282ADB68D57511@us.oracle.com><4E05ED7B.2070307@gmx.at><4023AF2C90A24208ABCC1644CB15F776@us.oracle.com><8A3D5626004B4945A624B69463A0B849@us.oracle.com> <4E06056!E.8030907@gmx.at> <4!E06141D.80302@gmx.at> !<4E07! 390B.7030702@gmx .at> <7E36258F1C874F1199F2630002DC4915@us.oracle.com> <0721F495F4A441529FCB91280D284E42@us.oracle.com> In-Reply-To: <0721F495F4A441529FCB91280D284E42@us.oracle.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 X-Spam-Score: -2.5 (--) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -2.5 (--) > I don't have a recipe to reproduce these latter symptoms. But perhaps this is > all due to the window not being dedicated. The window was dedicated initially but due to another `display-buffer' call "reusing it" it became undedicated again. Please use the `display-buffer-in-window' function below which doesn't reset the status when the buffer remains unchanged. martin (defun display-buffer-in-window (buffer window specifiers) "Display BUFFER in WINDOW and raise its frame if needed. WINDOW must be a live window and defaults to the selected one. Return WINDOW. SPECIFIERS must be a list of buffer display specifiers, see the documentation of `display-buffer-alist' for a description." (setq buffer (normalize-live-buffer buffer)) (setq window (normalize-live-window window)) (let* ((old-frame (selected-frame)) (new-frame (window-frame window)) (dedicated (cdr (assq 'dedicated specifiers))) (no-other-window (cdr (assq 'no-other-window specifiers)))) ;; Show BUFFER in WINDOW. (unless (eq buffer (window-buffer window)) ;; If we show another buffer in window, undedicate it first. (set-window-dedicated-p window nil)) (set-window-buffer window buffer) (when dedicated (set-window-dedicated-p window dedicated)) (when no-other-window (set-window-parameter window 'no-other-window t)) (unless (or (eq old-frame new-frame) (not (frame-visible-p new-frame)) ;; Assume the selected frame is already visible enough. (eq new-frame (selected-frame)) ;; Assume the frame from which we invoked the minibuffer ;; is visible. (and (minibuffer-window-active-p (selected-window)) (eq new-frame (window-frame (minibuffer-selected-window))))) (raise-frame new-frame)) ;; Return window. window)) From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 26 12:07:16 2011 Received: (at 8856) by debbugs.gnu.org; 26 Jun 2011 16:07:17 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qarrg-0001kY-01 for submit@debbugs.gnu.org; Sun, 26 Jun 2011 12:07:16 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qarre-0001kM-5a for 8856@debbugs.gnu.org; Sun, 26 Jun 2011 12:07:14 -0400 Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by rcsinet10.oracle.com (Switch-3.4.4/Switch-3.4.2) with ESMTP id p5QG75TV015200 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 26 Jun 2011 16:07:07 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5QG751T020247 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 26 Jun 2011 16:07:05 GMT Received: from abhmt104.oracle.com (abhmt104.oracle.com [141.146.116.56]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5QG6xsV013545; Sun, 26 Jun 2011 11:06:59 -0500 Received: from dradamslap1 (/10.159.51.223) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 26 Jun 2011 09:06:59 -0700 From: "Drew Adams" To: "'martin rudalics'" References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com><4DFE09A7.10500@gmx.at><0137606B527A48C69E3D6C704C5C6595@us.oracle.com><4DFF1709.3010409@gmx.at><309F7428711D4BEBB6063C60808D8069@us.oracle.com><4E00C54C.5080108@gmx.at><7AF0B637CAE14034973FBCC658AFEBD9@us.oracle.com><31769215C0FF4E1E89F9F641C5843E91@us.oracle.com><4E033CBA.1050700@gmx.at><4E037708.2000205@gmx.at><4E045081.3020009@gmx.at><90A40DD7F1B14BC1BE282ADB68D57511@us.oracle.com><4E05ED7B.2070307@gmx.at><4023AF2C90A24208ABCC1644CB15F776@us.oracle.com><8A3D5626004B4945A624B69463A0B849@us.oracle.com> <4E06056!E.8030907@gmx.at> <4!E06141D.80302@gmx.at> !<4E07! 390B.7030702@gmx .at> <7E36258F1C874F1199F2630002DC4915@us.oracle.com> <0721F495F4A441529FCB91280D284E42@us.oracle.com! > <4E07563A.3030704@g mx.at> Subject: RE: bug#8856: 24.0.50; regression: special-display-frame is no longer dedicated Date: Sun, 26 Jun 2011 09:06:52 -0700 Message-ID: <65F615312516499CBA3A2A0D65D2EABD@us.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <4E07563A.3030704@gmx.at> Thread-Index: Acw0GV5uMNq2W7dMQSufY3+uuRXTwwAAU/hw X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Source-IP: acsinet22.oracle.com [141.146.126.238] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090207.4E07592B.0092:SCFMA922111,ss=1,re=-4.000,fgs=0 X-Spam-Score: -6.5 (------) X-Debbugs-Envelope-To: 8856 Cc: 8856@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.5 (------) > The window was dedicated initially but due to another `display-buffer' > call "reusing it" it became undedicated again. > > Please use the `display-buffer-in-window' function below which doesn't > reset the status when the buffer remains unchanged. Yes, that fixes the problem. I see no more problems for the moment. Thanks for your help and your work in general. Please close this bug, if you like. I will open another if I find other problems. Looking forward to having these fixes in the next build, hopefully. - Drew From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 05 18:52:39 2011 Received: (at control) by debbugs.gnu.org; 5 Jul 2011 22:52:39 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QeETu-0008E6-UB for submit@debbugs.gnu.org; Tue, 05 Jul 2011 18:52:39 -0400 Received: from fencepost.gnu.org ([140.186.70.10]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QeETs-0008Ds-FU for control@debbugs.gnu.org; Tue, 05 Jul 2011 18:52:36 -0400 Received: from rgm by fencepost.gnu.org with local (Exim 4.71) (envelope-from ) id 1QeETm-0001SA-TV for control@debbugs.gnu.org; Tue, 05 Jul 2011 18:52:31 -0400 Date: Tue, 05 Jul 2011 18:52:30 -0400 Message-Id: Subject: control message for bug 8856 To: X-Mailer: mail (GNU Mailutils 2.1) From: Glenn Morris X-Spam-Score: -6.4 (------) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 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: -6.4 (------) close 8856 From unknown Thu Sep 11 18:37:22 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Wed, 03 Aug 2011 11:24:04 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator