X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Fcmdloop.el;h=269fa4041b8f5a05c50244bbcbd64aec190006a9;hb=5550b5b91e953696b468934fd97770824224c3ee;hp=a9ae8b2b59c186e52b2d70eb6d3397280c23b859;hpb=ea1ea793fe6e244ef5555ed983423a204101af13;p=chise%2Fxemacs-chise.git.1 diff --git a/lisp/cmdloop.el b/lisp/cmdloop.el index a9ae8b2..269fa40 100644 --- a/lisp/cmdloop.el +++ b/lisp/cmdloop.el @@ -130,9 +130,10 @@ or go back to just one window (by deleting all but the selected window)." :group 'editing-basics) (defun command-error (error-object) - (let ((inhibit-quit t) - (debug-on-error nil) - (etype (car-safe error-object))) + (let* ((old-debug-on-error debug-on-error) + (inhibit-quit t) + (debug-on-error nil) + (etype (car-safe error-object))) (setq quit-flag nil) (setq standard-output t) (setq standard-input t) @@ -161,7 +162,12 @@ or go back to just one window (by deleting all but the selected window)." (if (noninteractive) (progn - (message "%s exiting." emacs-program-name) + (if old-debug-on-error + (progn + (message "Backtrace:\n\n") + (backtrace) + (message "\n"))) + (message "%s exiting\n." emacs-program-name) (kill-emacs -1))) t)) @@ -385,7 +391,7 @@ when called from Lisp." ; (call-interactively _command _record-flag))))) (defun y-or-n-p-minibuf (prompt) - "Ask user a \"y or n\" question. Return t if answer is \"y\". + "Ask user a \"y or n\" question. Return t if answer is \"y\", nil if \"n\". Takes one argument, which 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. @@ -456,9 +462,28 @@ and can edit it until it has been confirmed." (sleep-for 2)))) ans))) -;; these may be redefined later, but make the original def easily encapsulable -(define-function 'yes-or-no-p 'yes-or-no-p-minibuf) -(define-function 'y-or-n-p 'y-or-n-p-minibuf) +(defun yes-or-no-p (prompt) + "Ask user a yes-or-no question. Return t if answer is yes. +The question is asked with a dialog box or the minibuffer, as appropriate. +Takes one argument, which is the string to display to ask the question. +It should end in a space; `yes-or-no-p' adds `(yes or no) ' to it. +The user must confirm the answer with RET, +and can edit it until it as been confirmed." + (if (should-use-dialog-box-p) + (yes-or-no-p-dialog-box prompt) + (yes-or-no-p-minibuf prompt))) + +(defun y-or-n-p (prompt) + "Ask user a \"y or n\" question. Return t if answer is \"y\", nil if \"n\". +Takes one argument, which is the string to display to ask the question. +The question is asked with a dialog box or the minibuffer, as appropriate. +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." + (if (should-use-dialog-box-p) + (yes-or-no-p-dialog-box prompt) + (y-or-n-p-minibuf prompt))) + (defun read-char ()