From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Deniz Dogan Newsgroups: gmane.emacs.bugs Subject: bug#8948: 24.0.50; y-or-n-p doesn't support scroll-o-w like yes-or-no-p Date: Thu, 30 Jun 2011 21:30:24 +0200 Message-ID: <4E0CCED0.20604@dogan.se> References: <874o3a1s7g.fsf@gmail.com> <8739irxt7f.fsf@gmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: dough.gmane.org 1309463622 15848 80.91.229.12 (30 Jun 2011 19:53:42 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Thu, 30 Jun 2011 19:53:42 +0000 (UTC) To: 8948@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Jun 30 21:53:38 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 1QcNIv-0000Q1-Ct for geb-bug-gnu-emacs@m.gmane.org; Thu, 30 Jun 2011 21:53:37 +0200 Original-Received: from localhost ([::1]:51463 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QcNIu-00070w-Dw for geb-bug-gnu-emacs@m.gmane.org; Thu, 30 Jun 2011 15:53:36 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:41940) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QcMx9-00019M-Tt for bug-gnu-emacs@gnu.org; Thu, 30 Jun 2011 15:31:10 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QcMx6-0001lE-Oy for bug-gnu-emacs@gnu.org; Thu, 30 Jun 2011 15:31:06 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:44016) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QcMx6-0001l5-DD for bug-gnu-emacs@gnu.org; Thu, 30 Jun 2011 15:31:04 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69) (envelope-from ) id 1QcMx5-0008Cb-TB; Thu, 30 Jun 2011 15:31:03 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Deniz Dogan Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 30 Jun 2011 19:31:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 8948 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.130946226231522 (code B ref -1); Thu, 30 Jun 2011 19:31:03 +0000 Original-Received: (at submit) by debbugs.gnu.org; 30 Jun 2011 19:31:02 +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 1QcMx3-0008CK-F1 for submit@debbugs.gnu.org; Thu, 30 Jun 2011 15:31:01 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QcMx1-0008C8-0L for submit@debbugs.gnu.org; Thu, 30 Jun 2011 15:30:59 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QcMwu-0001gJ-9o for submit@debbugs.gnu.org; Thu, 30 Jun 2011 15:30:53 -0400 Original-Received: from lists.gnu.org ([140.186.70.17]:53729) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QcMwt-0001g7-PO for submit@debbugs.gnu.org; Thu, 30 Jun 2011 15:30:52 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:41659) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QcMwr-00012h-S8 for bug-gnu-emacs@gnu.org; Thu, 30 Jun 2011 15:30:51 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QcMwp-0001ex-R3 for bug-gnu-emacs@gnu.org; Thu, 30 Jun 2011 15:30:49 -0400 Original-Received: from ch-smtp04.sth.basefarm.net ([80.76.153.5]:56865) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QcMwp-0001ej-76 for bug-gnu-emacs@gnu.org; Thu, 30 Jun 2011 15:30:47 -0400 Original-Received: from c80-216-105-155.bredband.comhem.se ([80.216.105.155]:59245 helo=[192.168.0.10]) by ch-smtp04.sth.basefarm.net with esmtp (Exim 4.76) (envelope-from ) id 1QcMwZ-0000Lc-Es for bug-gnu-emacs@gnu.org; Thu, 30 Jun 2011 21:30:33 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20110624 Thunderbird/5.0 In-Reply-To: <8739irxt7f.fsf@gmail.com> X-Originating-IP: 80.216.105.155 X-Scan-Result: No virus found in message 1QcMwZ-0000Lc-Es. X-Scan-Signature: ch-smtp04.sth.basefarm.net 1QcMwZ-0000Lc-Es 3f61c1534530bcef7e998a50983f9f71 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list Resent-Date: Thu, 30 Jun 2011 15:31:03 -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:47650 Archived-At: On 2011-06-30 16:57, Thierry Volpiatto wrote: > Thierry Volpiatto writes: > >> Hi, >> after discussion about bug#8927, i discover that >> from a yes-or-no-p i can scroll-other-window, but not from a >> y-or-n-p. > > This allow scrolling from a y-or-n-p: > > > #+BEGIN_SRC lisp > (defun y-or-n-p (prompt) > "Ask user a \"y or n\" question. Return t if answer is \"y\". > PROMPT is the string to display to ask the question. It should > end in a space; `y-or-n-p' adds \"(y or n) \" to it. > > No confirmation of the answer is requested; a single character is enough. > Also accepts Space to mean yes, or Delete to mean no. \(Actually, it uses > the bindings in `query-replace-map'; see the documentation of that variable > for more information. In this case, the useful bindings are `act', `skip', > `recenter', and `quit'.\) > > Under a windowing system a dialog box will be used if `last-nonmenu-event' > is nil and `use-dialog-box' is non-nil." > ;; ¡Beware! when I tried to edebug this code, Emacs got into a weird state > ;; where all the keys were unbound (i.e. it somehow got triggered > ;; within read-key, apparently). I had to kill it. > (let ((answer 'recenter)) > (if (and (display-popup-menus-p) > (listp last-nonmenu-event) > use-dialog-box) > (setq answer > (x-popup-dialog t `(,prompt ("yes" . act) ("No" . skip)))) > (setq prompt (concat prompt > (if (eq ?\s (aref prompt (1- (length prompt)))) > "" " ") > "(y or n) ")) > (while > (let* ((key > (let ((cursor-in-echo-area t)) > (when minibuffer-auto-raise > (raise-frame (window-frame (minibuffer-window)))) > (read-key (propertize (if (or (eq answer 'recenter) > (eq com 'scroll-other-window) > (eq com 'scroll-other-window-down)) > prompt > (concat "Please answer y or n. " > prompt)) > 'face 'minibuffer-prompt))))) > (setq answer (lookup-key query-replace-map (vector key) t)) > (setq com (lookup-key global-map (vector key) t)) > (cond > ((eq com 'scroll-other-window) > (with-selected-window (minibuffer-window) > (scroll-other-window 1)) t) > ((eq com 'scroll-other-window-down) > (with-selected-window (minibuffer-window) > (scroll-other-window -1)) t) > ((memq answer '(skip act)) nil) > ((eq answer 'recenter) (recenter) t) > ((memq answer '(exit-prefix quit)) (signal 'quit nil) t) > (t t))) > (ding) > (discard-input))) > (let ((ret (eq answer 'act))) > (unless noninteractive > (message "%s %s" prompt (if ret "y" "n"))) > ret))) > > #+END_SRC > I'm not so sure that's a suitable solution. What if someone wants yet another command to work in `y-or-n-p'? Deniz