From: Stefan Monnier Date: Mon, 11 May 2020 04:12:29 +0000 (-0400) Subject: * lisp/ielm.el: Handle corner case where */**/*** are not yet bound X-Git-Tag: emacs-28.0.90~7387 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=67bcde188f777e1f884eb46ab3123afa74d8d303;p=emacs.git * lisp/ielm.el: Handle corner case where */**/*** are not yet bound Remote redundant :group args. (ielm-eval-input): Use bound-and-true-p for */**/*** --- diff --git a/lisp/ielm.el b/lisp/ielm.el index fc06ebfa2db..47c5158ce41 100644 --- a/lisp/ielm.el +++ b/lisp/ielm.el @@ -44,8 +44,7 @@ (defcustom ielm-noisy t "If non-nil, IELM will beep on error." - :type 'boolean - :group 'ielm) + :type 'boolean) (defcustom ielm-prompt-read-only t "If non-nil, the IELM prompt is read only. @@ -74,7 +73,6 @@ buffers, including IELM buffers. If you sometimes use IELM on text-only terminals or with `emacs -nw', you might wish to use another binding for `comint-kill-whole-line'." :type 'boolean - :group 'ielm :version "22.1") (defcustom ielm-prompt "ELISP> " @@ -90,8 +88,7 @@ does not update the prompt of an *ielm* buffer with a running process. For IELM buffers that are not called `*ielm*', you can execute \\[inferior-emacs-lisp-mode] in that IELM buffer to update the value, for new prompts. This works even if the buffer has a running process." - :type 'string - :group 'ielm) + :type 'string) (defvar ielm-prompt-internal "ELISP> " "Stored value of `ielm-prompt' in the current IELM buffer. @@ -103,8 +100,7 @@ customizes `ielm-prompt'.") "Controls whether \\\\[ielm-return] has intelligent behavior in IELM. If non-nil, \\[ielm-return] evaluates input for complete sexps, or inserts a newline and indents for incomplete sexps. If nil, always inserts newlines." - :type 'boolean - :group 'ielm) + :type 'boolean) (defcustom ielm-dynamic-multiline-inputs t "Force multiline inputs to start from column zero? @@ -112,15 +108,13 @@ If non-nil, after entering the first line of an incomplete sexp, a newline will be inserted after the prompt, moving the input to the next line. This gives more frame width for large indented sexps, and allows functions such as `edebug-defun' to work with such inputs." - :type 'boolean - :group 'ielm) + :type 'boolean) (defvaralias 'inferior-emacs-lisp-mode-hook 'ielm-mode-hook) (defcustom ielm-mode-hook nil "Hooks to be run when IELM (`inferior-emacs-lisp-mode') is started." :options '(eldoc-mode) - :type 'hook - :group 'ielm) + :type 'hook) ;; We define these symbols (that are only used buffer-locally in ielm ;; buffers) this way to avoid having them be defined in the global @@ -366,9 +360,9 @@ nonempty, then flushes the buffer." ;; that same let. To avoid problems, neither of ;; these buffers should be alive during the ;; evaluation of form. - (let* ((*1 *) - (*2 **) - (*3 ***) + (let* ((*1 (bound-and-true-p *)) + (*2 (bound-and-true-p **)) + (*3 (bound-and-true-p ***)) (active-process (ielm-process)) (old-standard-output standard-output) new-standard-output @@ -453,11 +447,12 @@ nonempty, then flushes the buffer." (if error-type (progn (when ielm-noisy (ding)) - (setq output (concat output "*** " error-type " *** ")) - (setq output (concat output result))) + (setq output (concat output + "*** " error-type " *** " + result))) ;; There was no error, so shift the *** values - (setq *** **) - (setq ** *) + (setq *** (bound-and-true-p **)) + (setq ** (bound-and-true-p *)) (setq * result)) (when (or (not for-effect) (not (equal output ""))) (setq output (concat output "\n"))))