From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Drew Adams" Newsgroups: gmane.emacs.bugs Subject: bug#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> 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> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0020_01CC2E6B.61AAE5B0" X-Trace: dough.gmane.org 1308504443 32223 80.91.229.12 (19 Jun 2011 17:27:23 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sun, 19 Jun 2011 17:27:23 +0000 (UTC) Cc: 8856@debbugs.gnu.org To: "'martin rudalics'" Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Jun 19 19:27:19 2011 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1QYLmH-0003xW-Of for geb-bug-gnu-emacs@m.gmane.org; Sun, 19 Jun 2011 19:27:18 +0200 Original-Received: from localhost ([::1]:45674 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QYLmG-0006DW-QH for geb-bug-gnu-emacs@m.gmane.org; Sun, 19 Jun 2011 13:27:16 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:55751) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QYLm3-0006DR-6o for bug-gnu-emacs@gnu.org; Sun, 19 Jun 2011 13:27:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QYLm2-00025k-8y for bug-gnu-emacs@gnu.org; Sun, 19 Jun 2011 13:27:03 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:33027) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QYLm2-00025f-63 for bug-gnu-emacs@gnu.org; Sun, 19 Jun 2011 13:27:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69) (envelope-from ) id 1QYLm1-0008O0-P3; Sun, 19 Jun 2011 13:27:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: "Drew Adams" Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 19 Jun 2011 17:27:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 8856 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 8856-submit@debbugs.gnu.org id=B8856.130850441832226 (code B ref 8856); Sun, 19 Jun 2011 17:27:01 +0000 Original-Received: (at 8856) by debbugs.gnu.org; 19 Jun 2011 17:26:58 +0000 Original-Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QYLlx-0008Nj-QM for submit@debbugs.gnu.org; Sun, 19 Jun 2011 13:26:58 -0400 Original-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 Original-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 Original-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 Original-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 Original-Received: from dradamslap1 (/10.159.51.106) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 19 Jun 2011 10:26:38 -0700 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-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list Resent-Date: Sun, 19 Jun 2011 13:27:01 -0400 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:47316 Archived-At: 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--