@kbd{M-@key{next}}). This is especially useful with long lists of
possible completions. @xref{Other Window}.
-@vindex enable-recursive-minibuffers
@findex minibuffer-depth-indicate-mode
- Emacs normally disallows most commands that use the minibuffer while
-the minibuffer is active. To allow such commands in the minibuffer,
-set the variable @code{enable-recursive-minibuffers} to @code{t}.
-You might need also to enable @code{minibuffer-depth-indicate-mode}
-to show the current recursion depth in the minibuffer prompt
-on recursive use of the minibuffer.
+ The global minor mode @code{minibuffer-depth-indicate-mode} shows the
+current recursion depth in the minibuffer prompt on recursive use of the
+minibuffer.
When active, the minibuffer is usually in @code{minibuffer-mode}.
This is an internal Emacs mode without any special features.
several recursive minibuffers, the innermost (or most recently
entered) is the @dfn{active minibuffer}--it is the one you can
terminate by typing @key{RET} (@code{exit-minibuffer}) in. We usually
-call this @emph{the} minibuffer. You can permit or forbid recursive
-minibuffers by setting the variable
-@code{enable-recursive-minibuffers}, or by putting properties of that
-name on command symbols (@xref{Recursive Mini}.)
+call this @emph{the} minibuffer.
Like other buffers, a minibuffer uses a local keymap
(@pxref{Keymaps}) to specify special key bindings. The function that
returns zero.
@end defun
-@defopt enable-recursive-minibuffers
-If this variable is non-@code{nil}, you can invoke commands (such as
-@code{find-file}) that use minibuffers even while the minibuffer is
-active. Such invocation produces a recursive editing level for a new
-minibuffer. By default, the outer-level minibuffer is invisible while
-you are editing the inner one. If you have
-@code{minibuffer-follows-selected-frame} set to @code{nil}, you can
-have minibuffers visible on several frames at the same time.
-@xref{Basic Minibuffer,,, emacs}.
-
-If this variable is @code{nil}, you cannot invoke minibuffer commands
-when the minibuffer is active, not even if you switch to another window
-to do it.
-@end defopt
-
-If a command name has a property @code{enable-recursive-minibuffers}
-that is non-@code{nil}, then the command can use the minibuffer to read
-arguments even if it is invoked from the minibuffer. A command can
-also achieve this by binding @code{enable-recursive-minibuffers}
-to @code{t} in the interactive declaration (@pxref{Using Interactive}).
-The minibuffer command @code{next-matching-history-element} (normally
-@kbd{M-s} in the minibuffer) does the latter.
-
@node Inhibiting Interaction
@section Inhibiting Interaction
(read-passwd-mode 1)
(add-hook 'post-command-hook #'read-passwd--hide-password nil t))
(unwind-protect
- (let ((enable-recursive-minibuffers t)
- (read-hide-char (or read-hide-char ?*))
+ (let ((read-hide-char (or read-hide-char ?*))
(overriding-text-conversion-style 'password))
(read-string prompt nil t default)) ; t = "no history"
(when (buffer-live-p minibuf)
(let* ((calc-command-flags nil)
(calc-dollar-values calc-quick-prev-results)
(calc-dollar-used 0)
- (enable-recursive-minibuffers t)
(calc-language (if (memq calc-language '(nil big))
'flat calc-language))
(entry (calc-do-alg-entry "" "Quick calc: " t 'calc-quick-calc-history))
Return a list suitable for use in `interactive'."
(let* ((v (variable-at-point))
(default (and (symbolp v) (custom-variable-p v) (symbol-name v)))
- (enable-recursive-minibuffers t)
val)
(setq val (completing-read (format-prompt "Customize variable" default)
obarray 'custom-variable-p t nil
(const :tag "When used" hybrid)
(const :tag "Never" nil))
"28.1")
- (enable-recursive-minibuffers minibuffer boolean)
(history-length minibuffer
(choice (const :tag "Infinite" t) integer)
"24.5") ; 30 -> 100
Interactively, prompt for SEP. With a prefix argument, prompt
for REP as well."
(interactive
- (let* ((enable-recursive-minibuffers t)
- (sep (read-regexp
+ (let* ((sep (read-regexp
(format-prompt "New separator" crm-current-separator)
crm-current-separator)))
(list sep
that fails this command prompts you for the separator to use."
(interactive "" minibuffer-mode)
(let ((bob (minibuffer--completion-prompt-end))
- (all-complete t)
- (enable-recursive-minibuffers t))
+ (all-complete t))
;; Establish a canonical separator string, so we can insert it.
(setq crm-canonical-separator
(or
last-event-frame
overriding-local-map
(load-read-function #'read)
- ;; If we are inside a minibuffer, allow nesting
- ;; so that we don't get an error from the `e' command.
- (enable-recursive-minibuffers
- (or enable-recursive-minibuffers (> (minibuffer-depth) 0)))
(standard-input t) (standard-output t)
inhibit-redisplay
(cursor-in-echo-area nil)
(prompt-type (cdr (assq type '((nil . "function")
(defvar . "variable")
(defface . "face")))))
- (action this-command)
- (enable-recursive-minibuffers t))
+ (action this-command))
(list (intern
(minibuffer-with-setup-hook
(lambda () (setq minibuffer-action
(defvar save-some-buffers-action-alist
`((?\C-r
,(lambda (buf)
- (if (not enable-recursive-minibuffers)
- (progn (display-buffer buf)
- (setq other-window-scroll-buffer buf))
- (view-buffer buf (lambda (_) (exit-recursive-edit)))
- (recursive-edit))
+ (view-buffer buf (lambda (_) (exit-recursive-edit)))
+ (recursive-edit)
;; Return nil to ask about BUF again.
nil)
,(purecopy "view this buffer"))
(require 'diff) ;for diff-no-select.
(let ((diffbuf (diff-no-select (buffer-file-name buf) buf
nil 'noasync)))
- (if (not enable-recursive-minibuffers)
- (progn (display-buffer diffbuf)
- (setq other-window-scroll-buffer diffbuf))
- (view-buffer diffbuf (lambda (_) (exit-recursive-edit)))
- (recursive-edit))))
+ (view-buffer diffbuf (lambda (_) (exit-recursive-edit)))
+ (recursive-edit)))
;; Return nil to ask about BUF again.
nil)
,(purecopy "view changes in this buffer")))
"Describe command"
"Describe function")
fn))
- (enable-recursive-minibuffers t)
(val (completing-read
prompt
#'help--symbol-completion-table
it is displayed along with the global value."
(interactive
(let ((v (variable-at-point))
- (enable-recursive-minibuffers t)
(orig-buffer (current-buffer))
val)
(setq val (completing-read
describe-symbol-backends)))
(v-or-f (if found v-or-f (function-called-at-point)))
(found (or found v-or-f))
- (enable-recursive-minibuffers t)
(val (completing-read (format-prompt "Describe symbol"
(and found v-or-f))
#'help--symbol-completion-table
If INSERT (the prefix arg) is non-nil, insert the message in the buffer."
(interactive
(let ((fn (function-called-at-point))
- (enable-recursive-minibuffers t)
val)
(setq val (completing-read (format-prompt "Where is command" fn)
obarray #'commandp t nil nil
(error "Sorry, don't know how to kill things for `%s'" cat)))))
(let (;; Allow `yes-or-no-p' to work and don't let it
;; `icomplete-exhibit' anything.
- (enable-recursive-minibuffers t)
(icomplete-mode nil))
(funcall action))
(message nil)))))
"Prompt for FILE to search for using `find', starting from current directory."
(interactive)
(unless file
- (let ((enable-recursive-minibuffers t))
- (setq file
- (condition-case nil
- (read-string (concat "Wide find file: " ido-current-directory) ido-text)
- (quit "")))))
+ (setq file
+ (condition-case nil
+ (read-string (concat "Wide find file: " ido-current-directory) ido-text)
+ (quit ""))))
(when (> (length file) 0)
(setq ido-use-merged-list t ido-try-merged-list 'wide)
(setq ido-exit 'refresh)
"Prompt for DIR to search for using `find', starting from current directory."
(interactive)
(unless dir
- (let ((enable-recursive-minibuffers t))
- (setq dir
- (condition-case nil
- (read-string (concat "Wide find directory: " ido-current-directory) ido-text)
- (quit "")))))
+ (setq dir
+ (condition-case nil
+ (read-string (concat "Wide find directory: " ido-current-directory) ido-text)
+ (quit ""))))
(when (> (length dir) 0)
(setq ido-use-merged-list t ido-try-merged-list 'wide)
(setq ido-exit 'refresh)
"Prompt for DIR to create in current directory."
(interactive)
(unless dir
- (let ((enable-recursive-minibuffers t))
- (setq dir
- (read-string (concat "Make directory: " ido-current-directory) ido-text))))
+ (setq dir
+ (read-string (concat "Make directory: " ido-current-directory) ido-text)))
(when (> (length dir) 0)
(setq dir (concat ido-current-directory dir))
(unless (file-exists-p dir)
(interactive)
(if (not (eobp))
(delete-region (point) (line-end-position))
- (let ((enable-recursive-minibuffers t)
- (buf (ido-name (car ido-matches)))
+ (let ((buf (ido-name (car ido-matches)))
(nextbuf (cadr ido-matches)))
(cond
((get-buffer buf)
(defun ido-bury-buffer-at-head ()
"Bury the buffer at the head of `ido-matches'."
(interactive)
- (let ((enable-recursive-minibuffers t)
- (buf (ido-name (car ido-matches)))
+ (let ((buf (ido-name (car ido-matches)))
(nextbuf (cadr ido-matches)))
(when (get-buffer buf)
(bury-buffer buf)
(interactive)
(if (not (eobp))
(delete-region (point) (line-end-position))
- (let ((enable-recursive-minibuffers t)
- (file (ido-name (car ido-matches))))
+ (let ((file (ido-name (car ido-matches))))
(if file
(setq file (concat ido-current-directory file)))
(when (and file
(completions (info-lookup->completions topic mode))
(default (info-lookup-guess-default topic mode))
(completion-ignore-case (info-lookup->ignore-case topic mode))
- (enable-recursive-minibuffers t)
(value (completing-read
(format-prompt "Describe %s" default topic)
completions nil nil nil 'info-lookup-history default)))
(if default
(setq prompt (format prompt default)))
(let* ((completion-ignore-case t)
- ;; As it is quite normal to change input method in the
- ;; minibuffer, we must enable it even if
- ;; enable-recursive-minibuffers is currently nil.
- (enable-recursive-minibuffers t)
;; This binding is necessary because input-method-history is
;; buffer local.
(input-method (completing-read prompt input-method-alist
(when-let ((char (gethash name ucs-names)))
(get-char-code-property char 'general-category)))
names)))
- (enable-recursive-minibuffers t)
(exclude-p (< (prefix-numeric-value current-prefix-arg) 0))
(cat-names
(or (completing-read-multiple
Optional arg ALLOW-SINGLE non-nil means to additionally allow
single characters to be treated as standing for themselves."
- (let* ((enable-recursive-minibuffers t)
- (completion-ignore-case t)
+ (let* ((completion-ignore-case t)
(completion-tab-width 4)
(sort-fun (when (eq read-char-by-name-sort 'code)
#'mule--ucs-names-sort-by-code))
Minibuffer Depth Indication mode is a global minor mode. When
enabled, any recursive use of the minibuffer will show the
-recursion depth in the minibuffer prompt. This is only useful if
-`enable-recursive-minibuffers' is non-nil.
+recursion depth in the minibuffer prompt.
This is a global minor mode. If called interactively, toggle the
`Minibuffer-Depth-Indicate mode' mode. If the prefix argument is
;; Defines the minor mode `minibuffer-depth-indicate-mode'.
;;
;; When active, any recursive use of the minibuffer will show
-;; the recursion depth in the minibuffer prompt. This is only
-;; useful if `enable-recursive-minibuffers' is non-nil.
+;; the recursion depth in the minibuffer prompt.
;;; Code:
Minibuffer Depth Indication mode is a global minor mode. When
enabled, any recursive use of the minibuffer will show the
-recursion depth in the minibuffer prompt. This is only useful if
-`enable-recursive-minibuffers' is non-nil."
+recursion depth in the minibuffer prompt."
:global t
:group 'minibuffer
(if minibuffer-depth-indicate-mode
(or completion-local-styles
(let* ((cat (completion-metadata-get metadata 'category))
(over (completion--category-override cat 'styles)))
- (if over
- (delete-dups (append (cdr over) (copy-sequence completion-styles)))
- completion-styles))))
+ (if over (cdr over) completion-styles))))
(defcustom completions-exclude-exceptional-candidates t
"Whether to exclude exceptional minibuffer completion candidates."
(local 'minibuffer-completions-sort-function) #'reverse))
(setq-local
minibuffer-completions-sort-function
- (nth 3 (let ((enable-recursive-minibuffers t))
- (read-multiple-choice
- "Sort order" minibuffer-completions-sort-orders
- nil nil minibuffer-read-sort-order-with-completion)))))
+ (nth 3 (read-multiple-choice
+ "Sort order" minibuffer-completions-sort-orders
+ nil nil minibuffer-read-sort-order-with-completion))))
(when completion-auto-help (minibuffer-completion-help)))
(defun completion-styles-affixation (names)
(list (let ((styles (completion--styles (completion--field-metadata
(minibuffer-prompt-end))))
(current (when-let ((buf (get-buffer completions-buffer-name)))
- (buffer-local-value 'completions-style buf)))
- (enable-recursive-minibuffers t))
+ (buffer-local-value 'completions-style buf))))
(pcase current-prefix-arg
(`(,_ . ,_) nil) ; \\[universal-argument]
(0 (unless current
(defun minibuffer-set-action (action-fn)
"Set minibuffer action function of current minibuffer to ACTION-FN."
(interactive
- (let ((enable-recursive-minibuffers t))
- (list (completing-read "Action function: "
- (completion-table-with-metadata
- obarray '((category . function)))
- #'fboundp
- nil nil 'minibuffer-action-history)))
+ (list (completing-read "Action function: "
+ (completion-table-with-metadata
+ obarray '((category . function)))
+ #'fboundp
+ nil nil 'minibuffer-action-history))
minibuffer-mode)
(when (stringp action-fn) (setq action-fn (read action-fn)))
(setq-local minibuffer-action
(defun minibuffer-narrow-completions ()
"Restrict completion candidates for current minibuffer interaction."
(interactive "" minibuffer-mode)
- (let* ((enable-recursive-minibuffers t)
- (filter-desc
+ (let* ((filter-desc
(funcall
(or (when-let ((fun (completion-metadata-get
(completion--field-metadata
(defun minibuffer-narrow-completions-by-regexp ()
"Restrict completion candidates by matching a given regular expression."
(interactive "" minibuffer-mode)
- (let* ((enable-recursive-minibuffers t)
- (filter-desc (minibuffer-completions-regexp-predicate)))
+ (let* ((filter-desc (minibuffer-completions-regexp-predicate)))
(minibuffer--add-completions-predicate (car filter-desc) (cdr filter-desc))))
(defun minibuffer-add-completion-predicate (pred)
"Restrict completion candidates to those satisfying PRED."
(interactive
(list
- (let ((enable-recursive-minibuffers t))
- (completing-read "Predicate: "
- (completion-table-with-metadata
- obarray '((category . function)))
- #'fboundp
- nil nil 'minibuffer-completions-predicate-history
- "minibuffer-collect")))
+ (completing-read "Predicate: "
+ (completion-table-with-metadata
+ obarray '((category . function)))
+ #'fboundp
+ nil nil 'minibuffer-completions-predicate-history
+ "minibuffer-collect"))
minibuffer-mode)
(when (stringp pred) (setq pred (read pred)))
(minibuffer--add-completions-predicate pred (prin1-to-string pred)))
(defvar read-minibuffer-restore-windows nil "Unused obsolete variable.")
(make-obsolete-variable 'read-minibuffer-restore-windows nil "30.1")
+(defvar enable-recursive-minibuffers nil "Unused obsolete variable.")
+(make-obsolete-variable 'enable-recursive-minibuffers nil "31.1")
+
(defcustom minibuffer-auto-completion-idle-time 0.4
"Number for seconds to wait before auto-completion in the minibuffer."
:type 'float
(defun minibuffer-alternate-history (hist-var)
"Set history variable of current minibuffer to HIST-VAR."
- (interactive (let ((enable-recursive-minibuffers t))
- (list (read-history-variable "Use history variable: ")))
+ (interactive (list (read-history-variable "Use history variable: "))
minibuffer-mode)
;; TODO: Make `minibuffer-history-variable' (mini)buffer-local.
(setq minibuffer-history-variable (if (stringp hist-var)
(if (eq minibuffer-history-variable t)
(user-error "No history available")
(list
- (let ((enable-recursive-minibuffers t))
- (minibuffer-with-setup-hook
- (lambda ()
- (setq-local history-add-new-input nil
- ;; All candidates are previous inputs by
- ;; definition, so no need to highlight them.
- completions-highlight-previous-inputs nil))
- (completing-read
- "Delete from history: "
- (completion-table-dynamic
- (lambda (&rest _)
- (mapcar
- (lambda (cand)
- (if (and (stringp cand) (not (string-empty-p cand)))
- (propertize cand 'completion-identity cand)
- cand))
- (symbol-value minibuffer-history-variable))))
- nil t nil
- ;; HACK: Use the history variable of the original minibuffer
- ;; also in the recursive minibuffer s.t. `minibuffer-apply' in
- ;; the recursive minibuffer deletes from the original history.
- minibuffer-history-variable)))))
+ (minibuffer-with-setup-hook
+ (lambda ()
+ (setq-local history-add-new-input nil
+ ;; All candidates are previous inputs by
+ ;; definition, so no need to highlight them.
+ completions-highlight-previous-inputs nil))
+ (completing-read
+ "Delete from history: "
+ (completion-table-dynamic
+ (lambda (&rest _)
+ (mapcar
+ (lambda (cand)
+ (if (and (stringp cand) (not (string-empty-p cand)))
+ (propertize cand 'completion-identity cand)
+ cand))
+ (symbol-value minibuffer-history-variable))))
+ nil t nil
+ ;; HACK: Use the history variable of the original minibuffer
+ ;; also in the recursive minibuffer s.t. `minibuffer-apply' in
+ ;; the recursive minibuffer deletes from the original history.
+ minibuffer-history-variable))))
minibuffer-mode)
(if (eq minibuffer-history-variable t) (error "No history available")
(let* ((hist (cons nil (symbol-value minibuffer-history-variable)))
TOP-LEVEL-P is non-nil."
(interactive (list
(when current-prefix-arg
- (let ((enable-recursive-minibuffers t)
- (minibuffer-export-minibuffer (current-buffer)))
+ (let ((minibuffer-export-minibuffer (current-buffer)))
(completing-read
(format-prompt "Export function" "minibuffer-collect")
(completion-table-with-metadata
ange-ftp-default-user)
(ange-ftp-default-user
;; Ask the user.
- (let ((enable-recursive-minibuffers t))
- (read-string (format "User for %s: " host)
- (user-login-name))))
+ (read-string (format "User for %s: " host)
+ (user-login-name)))
(ange-ftp-netrc-default-user)
;; Default to the user's login name.
(t
;; see if same user has logged in to other hosts; if so then prompt
;; with the password that was used there.
(t
- (let* ((enable-recursive-minibuffers t)
- (other (ange-ftp-get-host-with-passwd user))
+ (let* ((other (ange-ftp-get-host-with-passwd user))
(passwd (if other
;; found another machine with the same user.
(defun tramp-gvfs-handler-askquestion (message choices)
"Implementation for the \"org.gtk.vfs.MountOperation.askQuestion\" method."
(save-window-excursion
- (let ((enable-recursive-minibuffers t)
- (use-dialog-box (and use-dialog-box (null noninteractive)))
+ (let ((use-dialog-box (and use-dialog-box (null noninteractive)))
result)
(with-parsed-tramp-file-name
(not non-essential)
;; Show only when Emacs has started already.
(current-message))
- (let ((enable-recursive-minibuffers t)
- inhibit-message)
+ (let (inhibit-message)
;; `tramp-error' does not show messages. So we must do it
;; ourselves.
(apply #'message fmt-string arguments)
(not non-essential)
;; Show only when Emacs has started already.
(current-message))
- (let ((enable-recursive-minibuffers t)
- inhibit-message)
+ (let (inhibit-message)
;; `tramp-error' does not show messages. So we must do it ourselves.
(apply #'message fmt-string arguments)
(discard-input)
(save-restriction
(with-tramp-progress-reporter
proc 3 "Waiting for prompts from remote shell"
- (let ((enable-recursive-minibuffers t)
- exit)
+ (let (exit)
(with-tramp-timeout (timeout (setq exit 'timeout))
(while (not exit)
(setq exit (catch 'tramp-action
(defun org-completing-read (&rest args)
"Completing-read with SPACE being a normal character."
- (let ((enable-recursive-minibuffers t)
- (minibuffer-local-completion-map
+ (let ((minibuffer-local-completion-map
(copy-keymap minibuffer-local-completion-map)))
(define-key minibuffer-local-completion-map " " #'self-insert-command)
(define-key minibuffer-local-completion-map "?" #'self-insert-command)
(defun cperl-describe-perl-symbol (val)
"Display the documentation of symbol at point, a Perl operator."
- (let ((enable-recursive-minibuffers t)
- regexp)
+ (let (regexp)
(cond
((string-match "^[&*][a-zA-Z_]" val)
(setq val (concat (substring val 0 1) "NAME")))
(lambda (string pred action)
(with-current-buffer buf
(save-excursion
- ;; If we need to ask for the tag table, allow that.
- (let ((enable-recursive-minibuffers t))
- (visit-tags-table-buffer))
+ (visit-tags-table-buffer)
(complete-with-action action
(tags-completion-table buf)
string pred))))))
see the Info node `(elisp) Programmed Completion' for more detailed
description of the arguments."
(save-excursion
- ;; If we need to ask for the tag table, allow that.
- (let ((enable-recursive-minibuffers t))
- (visit-tags-table-buffer))
+ (visit-tags-table-buffer)
(if (eq what t)
(all-completions string (tags-table-files) predicate)
(try-completion string (tags-table-files) predicate))))
"Get help on SYMBOL using `help'.
Interactively, prompt for symbol."
(interactive
- (let ((symbol (python-eldoc--get-symbol-at-point))
- (enable-recursive-minibuffers t))
+ (let ((symbol (python-eldoc--get-symbol-at-point)))
(list (read-string
;; `format-prompt' is new in Emacs 28.1.
(if (fboundp 'format-prompt)
See also `minibuffer-history-case-insensitive-variables'."
(interactive
(let* ((n (prefix-numeric-value current-prefix-arg))
- (enable-recursive-minibuffers t)
(regexp (read-from-minibuffer
(format-prompt "%s element matching regexp"
(and minibuffer-history-search-history
makes the search case-sensitive."
(interactive
(let* ((n (prefix-numeric-value current-prefix-arg))
- (enable-recursive-minibuffers t)
(regexp (read-from-minibuffer
(format-prompt "%s element matching regexp"
(and minibuffer-history-search-history
(interactive
(list
(let* ((sym (css--mdn-find-symbol))
- (enable-recursive-minibuffers t)
(value (completing-read (format-prompt "Describe CSS symbol" sym)
css--mdn-completion-list nil nil nil
'css--mdn-lookup-history sym)))
(not always-read)
transient--prefix)
(oset obj value nil)
- (let* ((enable-recursive-minibuffers t)
- (reader (oref obj reader))
+ (let* ((reader (oref obj reader))
(choices (if (functionp choices) (funcall choices) choices))
(prompt (transient-prompt obj))
(value (if multi-value (string-join value ",") value))
(file (url-filename href))
(user (url-user href))
(pass (url-password href))
- (enable-recursive-minibuffers t) ; for url-handler-mode (bug#10298)
byserv retval data)
(setq server (format "%s:%d" server port)
file (cond
challenge such as nonce and opaque."
(if attrs
(let* ((href (if (stringp url) (url-generic-parse-url url) url))
- (enable-recursive-minibuffers t)
(key (url-digest-cached-key href realm)))
(if (or (null key) overwrite)
/* Save this now, since use of minibuffer will clobber it. */
Lisp_Object prefix_arg = Vcurrent_prefix_arg;
- Lisp_Object enable = (SYMBOLP (function)
- ? Fget (function, Qenable_recursive_minibuffers)
- : Qnil);
-
/* If k or K discard an up-event, save it here so it can be retrieved with
U. */
Lisp_Object up_event = Qnil;
memclear (args, nargs * (2 * word_size + 1));
- if (!NILP (enable))
- specbind (Qenable_recursive_minibuffers, Qt);
-
char const *tem = string;
for (ptrdiff_t i = 2; tem < string_end; i++)
{
DEFSYM (Qread_number, "read-number");
DEFSYM (Qfuncall_interactively, "funcall-interactively");
DEFSYM (Qcommand_debug_status, "command-debug-status");
- DEFSYM (Qenable_recursive_minibuffers, "enable-recursive-minibuffers");
DEFSYM (Qmouse_leave_buffer_hook, "mouse-leave-buffer-hook");
DEFVAR_KBOARD ("prefix-arg", Vprefix_arg,
prompt = CALLN (Fconcat, prompt, Vyes_or_no_prompt);
specpdl_ref count = SPECPDL_INDEX ();
- specbind (Qenable_recursive_minibuffers, Qt);
/* Preserve the actual command that eventually called `yes-or-no-p'
(otherwise `repeat' will be repeating `exit-minibuffer'). */
specbind (Qreal_this_command, Vreal_this_command);
if (!STRINGP (prompt))
prompt = empty_unibyte_string;
- if (!enable_recursive_minibuffers
- && minibuf_level > 0)
- {
- Lisp_Object str
- = build_string ("Command attempted to use minibuffer while in minibuffer");
- if (EQ (selected_window, minibuf_window))
- Fsignal (Quser_error, (list1 (str)));
- else
- /* If we're in another window, cancel the minibuffer that's active. */
- Fthrow (Qexit, str);
- }
-
if ((noninteractive
/* In case we are running as a daemon, only do this before
detaching from the terminal. */
controls the behavior, rather than this variable. */);
completion_ignore_case = 0;
- DEFVAR_BOOL ("enable-recursive-minibuffers", enable_recursive_minibuffers,
- doc: /* Non-nil means to allow minibuffer commands while in the minibuffer.
-This variable makes a difference whenever the minibuffer window is active.
-Also see `minibuffer-depth-indicate-mode', which may be handy if this
-variable is non-nil. */);
- enable_recursive_minibuffers = 0;
-
DEFVAR_LISP ("minibuffer-completion-table", Vminibuffer_completion_table,
doc: /* Alist or obarray used for completion in the minibuffer.
This becomes the ALIST argument to `try-completion' and `all-completions'.
(ert-deftest mule-cmds--test-universal-coding-system-argument ()
(should (equal "ccccccccccccccccab"
- (let ((enable-recursive-minibuffers t))
- (ert-simulate-keys
- (kbd "C-x RET c u t f - 8 RET C-u C-u c a b RET")
- (read-string "prompt:"))))))
+ (ert-simulate-keys
+ (kbd "C-x RET c u t f - 8 RET C-u C-u c a b RET")
+ (read-string "prompt:")))))
;;Bug#65997, ensure that old-names haven't overridden new names.
(ert-deftest mule-cmds-tests--ucs-names-old-name-override ()