bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#64656: 29.0.91; Doc of minibuffer histories and completing-read - au


From: Juri Linkov
Subject: bug#64656: 29.0.91; Doc of minibuffer histories and completing-read - automatic addition of completions to DEFAULT list
Date: Sun, 12 Nov 2023 10:13:10 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu)

>> I'm trying various completions after customizing completions-sort to nil,
>> so currently noticed a problem in the completions of file names.
>
> So you agree that the problem is wider than that?

The problem reported by this bug report is that the order is random by
`C-h v M-n M-n' because it uses obarray.  There is no such problem for
`C-x C-f M-n M-n' because the list of default values is truncated
explicitly in `read-file-name-default' by

  (minibuffer-with-setup-hook
      (lambda ()
        (setq-local minibuffer-default-add-function
          ...

So maybe to use the same to truncate the list of default values
for `C-h f', `C-h v', `C-h o'?

diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index e93c535bbef..4931aeb49cd 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -234,18 +234,21 @@ help-fns--describe-function-or-command-prompt
                                   "Describe function")
                                 fn))
          (enable-recursive-minibuffers t)
-         (val (completing-read
-               prompt
-               #'help--symbol-completion-table
-               (lambda (f) (if want-command
-                          (commandp f)
-                        (or (fboundp f) (get f 'function-documentation))))
-               ;; We used `confirm' for a while because we may want to see the
-               ;; meta-info about a function even if the function itself is not
-               ;; defined, but this use case is too marginal and rarely tested,
-               ;; not worth the trouble (bug#64902).
-               t nil nil
-               (and fn (symbol-name fn)))))
+         (val (minibuffer-with-setup-hook
+                  (lambda ()
+                    (setq-local minibuffer-default-add-function nil))
+                (completing-read
+                 prompt
+                 #'help--symbol-completion-table
+                 (lambda (f) (if want-command
+                                 (commandp f)
+                               (or (fboundp f) (get f 
'function-documentation))))
+                 ;; We used `confirm' for a while because we may want to see 
the
+                 ;; meta-info about a function even if the function itself is 
not
+                 ;; defined, but this use case is too marginal and rarely 
tested,
+                 ;; not worth the trouble (bug#64902).
+                 t nil nil
+                 (and fn (symbol-name fn))))))
     (unless (equal val "")
       (setq fn (intern val)))
     ;; These error messages are intended to be less technical for the
@@ -1269,18 +1272,21 @@ describe-variable
         (enable-recursive-minibuffers t)
          (orig-buffer (current-buffer))
         val)
-     (setq val (completing-read
-                (format-prompt "Describe variable" (and (symbolp v) v))
-                #'help--symbol-completion-table
-                (lambda (vv)
-                  (or (get vv 'variable-documentation)
-                      (and (not (keywordp vv))
-                           ;; Since the variable may only exist in the
-                           ;; original buffer, we have to look for it
-                           ;; there.
-                           (buffer-local-boundp vv orig-buffer))))
-                t nil nil
-                (if (symbolp v) (symbol-name v))))
+     (setq val (minibuffer-with-setup-hook
+                   (lambda ()
+                     (setq-local minibuffer-default-add-function nil))
+                 (completing-read
+                  (format-prompt "Describe variable" (and (symbolp v) v))
+                  #'help--symbol-completion-table
+                  (lambda (vv)
+                    (or (get vv 'variable-documentation)
+                        (and (not (keywordp vv))
+                             ;; Since the variable may only exist in the
+                             ;; original buffer, we have to look for it
+                             ;; there.
+                             (buffer-local-boundp vv orig-buffer))))
+                  t nil nil
+                  (if (symbolp v) (symbol-name v)))))
      (list (if (equal val "")
               v (intern val)))))
   (let (file-name
@@ -1876,14 +1882,17 @@ describe-symbol
           (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
-                               (lambda (vv)
-                                  (cl-some (lambda (x) (funcall (nth 1 x) vv))
-                                           describe-symbol-backends))
-                               t nil nil
-                               (if found (symbol-name v-or-f)))))
+          (val (minibuffer-with-setup-hook
+                   (lambda ()
+                     (setq-local minibuffer-default-add-function nil))
+                 (completing-read (format-prompt "Describe symbol"
+                                                 (and found v-or-f))
+                                 #'help--symbol-completion-table
+                                 (lambda (vv)
+                                    (cl-some (lambda (x) (funcall (nth 1 x) 
vv))
+                                             describe-symbol-backends))
+                                 t nil nil
+                                 (if found (symbol-name v-or-f))))))
      (list (if (equal val "")
               (or v-or-f "") (intern val)))))
   (let ((help-buffer-under-preparation t))

reply via email to

[Prev in Thread] Current Thread [Next in Thread]