unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
@ 2012-09-14 13:53 Dani Moncayo
  2012-09-14 15:56 ` Stefan Monnier
  0 siblings, 1 reply; 55+ messages in thread
From: Dani Moncayo @ 2012-09-14 13:53 UTC (permalink / raw)
  To: 12443

Severity: minor

Hello,

I see that some commands that use the minibuffer such as "C-x b"
(switch-to-buffer) present the default value in the minibuffer prompt,
as "(default <value>)", while other commands such as "C-x r m"
(bookmark-set) omit the "default " part, i.e, they show the default
value just as "(value)".

I see no reason for this inconsistency, neither I see the need for the
"default " part.

So, hereby I propose to fix this, i.e., to omit the "default " in
those commands where this is currently shown.

TIA.


In GNU Emacs 24.2.50.1 (i386-mingw-nt6.1.7601)
 of 2012-09-13 on DANI-PC
Bzr revision: 110018 eggert@cs.ucla.edu-20120913162306-gi60swatqiu16m6e
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
 `configure --with-gcc (4.7) --no-opt --enable-checking --cflags
 -I../../libs/libxpm-3.5.8/include -I../../libs/libxpm-3.5.8/src
 -I../../libs/libpng-1.4.10 -I../../libs/zlib-1.2.6
 -I../../libs/giflib-4.1.4-1/include -I../../libs/jpeg-6b-4/include
 -I../../libs/tiff-3.8.2-1/include
 -I../../libs/libxml2-2.7.8-w32-bin/include/libxml2
 -I../../libs/gnutls-3.0.16/include
 -I../../libs/libiconv-1.14-2-mingw32-dev/include'

Important settings:
  value of $LANG: ESN
  locale-coding-system: cp1252
  default enable-multibyte-characters: t


-- 
Dani Moncayo





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2012-09-14 13:53 bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy) Dani Moncayo
@ 2012-09-14 15:56 ` Stefan Monnier
  2012-09-14 16:39   ` Drew Adams
  2012-09-14 19:10   ` Dani Moncayo
  0 siblings, 2 replies; 55+ messages in thread
From: Stefan Monnier @ 2012-09-14 15:56 UTC (permalink / raw)
  To: Dani Moncayo; +Cc: 12443

> I see no reason for this inconsistency,

Agreed.  The officially sanctioned behavior is to use "(default ...)".

> neither I see the need for the "default " part.

That would make the job of minibuffer-electric-default-mode harder
(more false positives).

> So, hereby I propose to fix this, i.e., to omit the "default " in
> those commands where this is currently shown.

I find the "(default ...)" text to use up too much space for my own taste, so
I use the patch below to rewrite it on-the-fly to "[...]".


        Stefan


Using submit branch file:///home/monnier/src/emacs/bzr/trunk/
=== modified file 'lisp/minibuf-eldef.el'
--- lisp/minibuf-eldef.el	2012-04-09 13:05:48 +0000
+++ lisp/minibuf-eldef.el	2012-09-14 15:54:47 +0000
@@ -34,15 +34,17 @@
 ;;; Code:
 
 (defvar minibuffer-default-in-prompt-regexps
-  '(("\\( (default\\>.*)\\):? \\'" . 1) ("\\( \\[.*\\]\\):? *\\'" . 1))
+  '(("\\( (default\\(?: is\\)? \\(.*\\))\\):? \\'" 1 " [\\2]")
+    ("\\( \\[.*\\]\\):? *\\'" 1))
   "A list of regexps matching the parts of minibuffer prompts showing defaults.
 When `minibuffer-electric-default-mode' is active, these regexps are
 used to identify the portions of prompts to elide.
 
-Each entry is either a string, which should be a regexp matching the
-default portion of the prompt, or a cons cell, who's car is a regexp
-matching the default part of the prompt, and who's cdr indicates the
-regexp subexpression that matched.")
+Each entry is of the form (REGEXP MATCH-NUM &optional REWRITE),
+where REGEXP should match the default part of the prompt,
+MATCH-NUM is the subgroup that matched the actual default indicator,
+and REWRITE, if present, is a string to pass to `replace-match' that
+should be displayed in its place.")
 
 \f
 ;;; Internal variables
@@ -85,15 +87,25 @@
 	;; See the prompt contains a default input indicator
 	(while regexps
 	  (setq match (pop regexps))
-	  (if (re-search-forward (if (stringp match) match (car match)) nil t)
-	      (setq regexps nil)
+	  (if (re-search-forward (car match) nil t)
+              (if (consp (cddr match))
+                  (let ((inhibit-read-only t)
+                        (buffer-undo-list t)
+                        (props (text-properties-at (match-beginning (cadr match)))))
+                    (replace-match (caddr match) nil nil nil (cadr match))
+                    (set-text-properties (match-beginning (cadr match))
+                                         (match-end (cadr match))
+                                         props)
+                    (setq match nil)
+                    (goto-char (point-min)))
+                (setq regexps nil))
 	    (setq match nil)))))
     (if (not match)
 	;; Nope, so just make sure our post-command-hook isn't left around.
 	(remove-hook 'post-command-hook #'minibuf-eldef-update-minibuffer t)
       ;; Yup; set things up so we can frob the prompt as the state of
       ;; the input string changes.
-      (setq match (if (consp match) (cdr match) 0))
+      (setq match (cadr match))
       (setq minibuf-eldef-overlay
 	    (make-overlay (match-beginning match) (match-end match)))
       (setq minibuf-eldef-showing-default-in-prompt t)
@@ -124,10 +136,6 @@
 	   (overlay-put minibuf-eldef-overlay 'intangible t)))))
 
 \f
-;;; Note this definition must be at the end of the file, because
-;;; `define-minor-mode' actually calls the mode-function if the
-;;; associated variable is non-nil, which requires that all needed
-;;; functions be already defined.  [This is arguably a bug in d-m-m]
 ;;;###autoload
 (define-minor-mode minibuffer-electric-default-mode
   "Toggle Minibuffer Electric Default mode.






^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2012-09-14 15:56 ` Stefan Monnier
@ 2012-09-14 16:39   ` Drew Adams
  2012-09-14 19:17     ` Dani Moncayo
  2012-09-14 19:10   ` Dani Moncayo
  1 sibling, 1 reply; 55+ messages in thread
From: Drew Adams @ 2012-09-14 16:39 UTC (permalink / raw)
  To: 'Stefan Monnier', 'Dani Moncayo'; +Cc: 12443

> > I see no reason for this inconsistency,
> 
> Agreed.  The officially sanctioned behavior is to use "(default ...)".

> > neither I see the need for the "default " part.
> 
> That would make the job of minibuffer-electric-default-mode harder
> (more false positives).

No offense to Miles or anyone else, but that mode is just a workaround for the
bother introduced by Emacs adding `(default ...)' here and there (but not yet
everywhere).  Just get rid of the cause, instead of sticking a band-aid on the
wound.

> > So, hereby I propose to fix this, i.e., to omit the "default " in
> > those commands where this is currently shown.
> 
> I find the "(default ...)" text to use up too much space for 
> my own taste, so I use the patch below to rewrite it on-the-fly
> to "[...]".

Just get rid of "(default ...)" altogether.  A user can use `M-n' to see the
default value, and `M-n RET' instead of `RET' to choose it.  No big deal, and a
lot less noise.

---

Or do as I do in Icicles: give users the choice, across all minibuffer prompts.
They have an option, with these possible values:

nil               - Do not insert default value
                    or add it to prompt.
t                 - Add default value to prompt
                    (except for `read-file-name' and
                    `read-from-minibuffer').
                    Do not insert it.
`insert-start'    - Insert default value
                    and leave cursor at start.
`insert-end'      - Insert default value
                    and leave cursor at end.
`preselect-start' - Insert and preselect default value;
                    leave cursor at beginning.
`preselect-end'   - Insert and preselect default value;
                    leave cursor at end.

The default value of the option is `t' (mainly to be closer to what people are
used to in vanilla Emacs).  But what I am suggesting for Emacs is the `nil'
behavior as default: do nothing with the default value.  (Personally, I use
`insert-end'.)






^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2012-09-14 15:56 ` Stefan Monnier
  2012-09-14 16:39   ` Drew Adams
@ 2012-09-14 19:10   ` Dani Moncayo
  2012-09-14 19:41     ` Stefan Monnier
  1 sibling, 1 reply; 55+ messages in thread
From: Dani Moncayo @ 2012-09-14 19:10 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: 12443

On Fri, Sep 14, 2012 at 5:56 PM, Stefan Monnier
<monnier@iro.umontreal.ca> wrote:
>> I see no reason for this inconsistency,
>
> Agreed.  The officially sanctioned behavior is to use "(default ...)".

Then all commands should be consistent on that.

>> neither I see the need for the "default " part.
>
> That would make the job of minibuffer-electric-default-mode harder
> (more false positives).

I didn't know about that minor mode.  I've just read its docstring and
I think it isn't worth it, because:
* It makes the input string jump right and left, making harder to
concentrate on it.
* Users obviously know that the default value is used only when no
value is provided, so there is no need to be inserting/removing the
default value from the prompt.
* The only advantage I can see is to save space in the minibuffer when
you are entering some text, but usually the frame is wide enough not
to care about this.

(Anyway, I don't understand why the way of formatting the default
value in the prompt string should make the job of this mode harder,
because if we know what the default value is and how is formatted in
the prompt string, it should be trivial to identify that part at the
right side of the prompt string.  Maybe I'm missing something...)

>> So, hereby I propose to fix this, i.e., to omit the "default " in
>> those commands where this is currently shown.
>
> I find the "(default ...)" text to use up too much space for my own taste, so
> I use the patch below to rewrite it on-the-fly to "[...]".

Thanks, but if we agree that there is a problem here (or there is room
for improvement), it would be better to fix this in the vanilla Emacs.

-- 
Dani Moncayo





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2012-09-14 16:39   ` Drew Adams
@ 2012-09-14 19:17     ` Dani Moncayo
  0 siblings, 0 replies; 55+ messages in thread
From: Dani Moncayo @ 2012-09-14 19:17 UTC (permalink / raw)
  To: Drew Adams; +Cc: 12443

>> > So, hereby I propose to fix this, i.e., to omit the "default " in
>> > those commands where this is currently shown.
>>
>> I find the "(default ...)" text to use up too much space for
>> my own taste, so I use the patch below to rewrite it on-the-fly
>> to "[...]".
>
> Just get rid of "(default ...)" altogether.  A user can use `M-n' to see the
> default value, and `M-n RET' instead of `RET' to choose it.  No big deal, and a
> lot less noise.

But some users may prefer to see the default value in the prompt.

> ---
>
> Or do as I do in Icicles: give users the choice, across all minibuffer prompts.
> They have an option, with these possible values:
>
> nil               - Do not insert default value
>                     or add it to prompt.
> t                 - Add default value to prompt
>                     (except for `read-file-name' and
>                     `read-from-minibuffer').
>                     Do not insert it.
> `insert-start'    - Insert default value
>                     and leave cursor at start.
> `insert-end'      - Insert default value
>                     and leave cursor at end.
> `preselect-start' - Insert and preselect default value;
>                     leave cursor at beginning.
> `preselect-end'   - Insert and preselect default value;
>                     leave cursor at end.
>

That looks like a good improvement, indeed.

> The default value of the option is `t' (mainly to be closer to what people are
> used to in vanilla Emacs).  But what I am suggesting for Emacs is the `nil'
> behavior as default: do nothing with the default value.  (Personally, I use
> `insert-end'.)

I'm not sure what would be the more suitable default value (whether
nil ot t), in any case, this is secondary, as anyone could customize
it.

-- 
Dani Moncayo





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2012-09-14 19:10   ` Dani Moncayo
@ 2012-09-14 19:41     ` Stefan Monnier
  2012-09-14 20:42       ` Dani Moncayo
  0 siblings, 1 reply; 55+ messages in thread
From: Stefan Monnier @ 2012-09-14 19:41 UTC (permalink / raw)
  To: Dani Moncayo; +Cc: 12443

>>> I see no reason for this inconsistency,
>> Agreed.  The officially sanctioned behavior is to use "(default ...)".
> Then all commands should be consistent on that.

Agreed.

> (Anyway, I don't understand why the way of formatting the default
> value in the prompt string should make the job of this mode harder,
> because if we know what the default value is and how is formatted in
> the prompt string, it should be trivial to identify that part at the
> right side of the prompt string.  Maybe I'm missing something...)

The problem is that we don't always know how it is formatted in the
prompt (it might be a shortened version, for example).

> Thanks, but if we agree that there is a problem here (or there is room
> for improvement), it would be better to fix this in the vanilla Emacs.

It's a matter of taste (some people prefer the "(default ...)").


        Stefan





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2012-09-14 19:41     ` Stefan Monnier
@ 2012-09-14 20:42       ` Dani Moncayo
  2012-09-14 20:50         ` Jambunathan K
  2012-09-14 22:47         ` Juri Linkov
  0 siblings, 2 replies; 55+ messages in thread
From: Dani Moncayo @ 2012-09-14 20:42 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: 12443

>> Thanks, but if we agree that there is a problem here (or there is room
>> for improvement), it would be better to fix this in the vanilla Emacs.
>
> It's a matter of taste (some people prefer the "(default ...)").

maybe, but other people (Drew, you, me and I guess many others) prefer
other behavior.

Therefore, it seems that this should be user-configurable.

-- 
Dani Moncayo





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2012-09-14 20:42       ` Dani Moncayo
@ 2012-09-14 20:50         ` Jambunathan K
  2012-09-14 20:55           ` Drew Adams
  2012-09-14 22:47         ` Juri Linkov
  1 sibling, 1 reply; 55+ messages in thread
From: Jambunathan K @ 2012-09-14 20:50 UTC (permalink / raw)
  To: Dani Moncayo; +Cc: 12443

Dani Moncayo <dmoncayo@gmail.com> writes:

>>> Thanks, but if we agree that there is a problem here (or there is room
>>> for improvement), it would be better to fix this in the vanilla Emacs.
>>
>> It's a matter of taste (some people prefer the "(default ...)").
>
> maybe, but other people (Drew, you, me and I guess many others) prefer
> other behavior.
>
> Therefore, it seems that this should be user-configurable.

A new/first-time user will need a hint.

An experienced user or a user with some experience - one who knows what
to expect, where and when - will find it a clutter.

I believe I belong to the third camp.
-- 





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2012-09-14 20:50         ` Jambunathan K
@ 2012-09-14 20:55           ` Drew Adams
  0 siblings, 0 replies; 55+ messages in thread
From: Drew Adams @ 2012-09-14 20:55 UTC (permalink / raw)
  To: 'Jambunathan K', 'Dani Moncayo'; +Cc: 12443

> >> It's a matter of taste (some people prefer the "(default ...)").
> >
> > maybe, but other people (Drew, you, me and I guess many 
> > others) prefer other behavior.
> >
> > Therefore, it seems that this should be user-configurable.
> 
> A new/first-time user will need a hint.
> 
> An experienced user or a user with some experience - one who 
> knows what to expect, where and when - will find it a clutter.

So make the default value do what we do now, if you really think such a hint is
important for newbies.  But give users the choice.

FWIW, I do not think that newbies need such a hint, anymore than they might need
hints about hitting TAB for completion or a host of other things one could
imagine are as new to them as `M-n'.  But I am not adamantly against providing
such hints by default.






^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2012-09-14 20:42       ` Dani Moncayo
  2012-09-14 20:50         ` Jambunathan K
@ 2012-09-14 22:47         ` Juri Linkov
  2020-08-25 12:30           ` Lars Ingebrigtsen
  1 sibling, 1 reply; 55+ messages in thread
From: Juri Linkov @ 2012-09-14 22:47 UTC (permalink / raw)
  To: Dani Moncayo; +Cc: 12443

>> It's a matter of taste (some people prefer the "(default ...)").
>
> maybe, but other people (Drew, you, me and I guess many others) prefer
> other behavior.
>
> Therefore, it seems that this should be user-configurable.

(defcustom minibuffer-default-prompt-format " (default %s)"
 "Default format."
 :type 'string)

Example of usage:

(let ((default "def"))
  (read-from-minibuffer
   (format "Set bookmark%s: "
           (format minibuffer-default-prompt-format default))))

Other possible values:

(setq minibuffer-default-prompt-format " [%s]")
(setq minibuffer-default-prompt-format "")





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2012-09-14 22:47         ` Juri Linkov
@ 2020-08-25 12:30           ` Lars Ingebrigtsen
  2020-08-25 12:55             ` Stefan Kangas
  0 siblings, 1 reply; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-08-25 12:30 UTC (permalink / raw)
  To: Juri Linkov; +Cc: Dani Moncayo, Stefan Monnier, 12443

Juri Linkov <juri@jurta.org> writes:

> (defcustom minibuffer-default-prompt-format " (default %s)"
>  "Default format."
>  :type 'string)
>
> Example of usage:
>
> (let ((default "def"))
>   (read-from-minibuffer
>    (format "Set bookmark%s: "
>            (format minibuffer-default-prompt-format default))))
>
> Other possible values:
>
> (setq minibuffer-default-prompt-format " [%s]")
> (setq minibuffer-default-prompt-format "")

I think that makes a lot of sense.  Does anybody have an opinion here?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-08-25 12:30           ` Lars Ingebrigtsen
@ 2020-08-25 12:55             ` Stefan Kangas
  2020-08-25 13:45               ` Stefan Monnier
  2020-08-25 15:19               ` Lars Ingebrigtsen
  0 siblings, 2 replies; 55+ messages in thread
From: Stefan Kangas @ 2020-08-25 12:55 UTC (permalink / raw)
  To: Lars Ingebrigtsen, Juri Linkov; +Cc: Dani Moncayo, Stefan Monnier, 12443

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Juri Linkov <juri@jurta.org> writes:
>
>> (defcustom minibuffer-default-prompt-format " (default %s)"
>>  "Default format."
>>  :type 'string)
>>
>> Example of usage:
>>
>> (let ((default "def"))
>>   (read-from-minibuffer
>>    (format "Set bookmark%s: "
>>            (format minibuffer-default-prompt-format default))))
>>
>> Other possible values:
>>
>> (setq minibuffer-default-prompt-format " [%s]")
>> (setq minibuffer-default-prompt-format "")
>
> I think that makes a lot of sense.  Does anybody have an opinion here?

I think this sounds like a good idea; consistency is good.

How about taking it even further?   Something along the lines of:

    (format-prompt PROMPT &optional DEFAULT)

    (format-prompt "Set bookmark" default)
    => "Set bookmark [foobar]: "

    (format-prompt "Goto char")
    => "Goto char: "

(This would avoid having to always remember to use double formats like
above.)





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-08-25 12:55             ` Stefan Kangas
@ 2020-08-25 13:45               ` Stefan Monnier
  2020-08-25 15:19               ` Lars Ingebrigtsen
  1 sibling, 0 replies; 55+ messages in thread
From: Stefan Monnier @ 2020-08-25 13:45 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: Lars Ingebrigtsen, Dani Moncayo, 12443

>>> (defcustom minibuffer-default-prompt-format " (default %s)"
>>>  "Default format."
>>>  :type 'string)
>>>
>>> Example of usage:
>>>
>>> (let ((default "def"))
>>>   (read-from-minibuffer
>>>    (format "Set bookmark%s: "
>>>            (format minibuffer-default-prompt-format default))))

Nitpick: `read-from-minibuffer` is a low-level function which you should
never use directly but only within other `read-<foo>` functions.
E.g. here one should probably use `read-string` instead.

Please make sure that `minibuffer-electric-default-mode` pays attention
to it.

> How about taking it even further?   Something along the lines of:
>
>     (format-prompt PROMPT &optional DEFAULT)
>
>     (format-prompt "Set bookmark" default)
>     => "Set bookmark [foobar]: "
>
>     (format-prompt "Goto char")
>     => "Goto char: "

LGTM,


        Stefan






^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-08-25 12:55             ` Stefan Kangas
  2020-08-25 13:45               ` Stefan Monnier
@ 2020-08-25 15:19               ` Lars Ingebrigtsen
  2020-08-25 15:34                 ` Drew Adams
                                   ` (2 more replies)
  1 sibling, 3 replies; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-08-25 15:19 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: Dani Moncayo, Stefan Monnier, 12443

Stefan Kangas <stefankangas@gmail.com> writes:

> How about taking it even further?   Something along the lines of:
>
>     (format-prompt PROMPT &optional DEFAULT)
>
>     (format-prompt "Set bookmark" default)
>     => "Set bookmark [foobar]: "
>
>     (format-prompt "Goto char")
>     => "Goto char: "
>
> (This would avoid having to always remember to use double formats like
> above.)

I like it.  I just grepped for '(default %' just to see how this would
look in practice.  Most of them look good:

diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index 873d586ca1..5335855d6e 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -339,8 +339,7 @@ dired--mark-suffix-interactive-spec
             ('(16)
              (let* ((dflt (char-to-string dired-marker-char))
                     (input (read-string
-                            (format
-                             "Marker character to use (default %s): " dflt)
+                            (format-prompt "Marker character to use" dflt)
                             nil nil dflt)))
                (aref input 0)))
             (_ dired-marker-char))))
diff --git a/lisp/frame.el b/lisp/frame.el
index 081d3010e9..d9e49d50ba 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -760,7 +760,7 @@ close-display-connection
    (list
     (let* ((default (frame-parameter nil 'display))
            (display (completing-read
-                     (format "Close display (default %s): " default)
+                     (format-prompt "Close display" default)
                      (delete-dups
                       (mapcar (lambda (frame)
                                 (frame-parameter frame 'display))

However, there's things like:

	 (setq from-coding (read-coding-system
			    (format "Recode filename %s from (default %s): "
				    filename default-coding)
			    default-coding))

These are surprisingly rare, but, uhm...  perhaps format-prompt could
take a format string?  The function would then look like:

(defun format-prompt (prompt default &rest format-args)
  )

where it would call `format' on PROMPT and FORMAT-ARGS.

So that would then be:

	 (setq from-coding (read-coding-system
			    (format-prompt "Recode filename %s"
                                            default-coding filename)
			    default-coding))


-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply related	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-08-25 15:19               ` Lars Ingebrigtsen
@ 2020-08-25 15:34                 ` Drew Adams
  2020-08-25 16:19                 ` Stefan Kangas
  2020-08-25 18:23                 ` Juri Linkov
  2 siblings, 0 replies; 55+ messages in thread
From: Drew Adams @ 2020-08-25 15:34 UTC (permalink / raw)
  To: Lars Ingebrigtsen, Stefan Kangas; +Cc: Dani Moncayo, Stefan Monnier, 12443

This is what I do in Icicles.
` icicle-handle-default-for-prompt' is called from
`(icicle-)completing-read' and `(icicle-)read-string'.

;; In `(icicle-)completing-read':
(setq prompt
      (icicle-handle-default-for-prompt
       prompt
       ;; If `insert-default-directory' then make DEF
       ;; in prompt relative to `default-directory'.
       (if (and def1  (eq icicle-default-value t)
                insert-default-directory)
           (file-relative-name def1)
         def1)
       (and (eq icicle-default-value t)
            ;; Include in prompt only if
            ;; `insert-default-directory' does not
            ;; insert it as input.
            (or (not insert-default-directory)
                (not (icicle-file-name-input-p))
                (not (equal def1 default-directory))))))
;; In `(icicle-)read-string':
(when default-value
  (setq prompt (icicle-handle-default-for-prompt
                 prompt
                 default-value
                 (eq icicle-default-value t))))

(defun icicle-handle-default-for-prompt (prompt default include)
  "Return PROMPT, possibly changed to format or remove the DEFAULT value.
Argument INCLUDE:
 * nil means do not include DEFAULT in prompt.  Remove it if there.
 * non-nil means include DEFAULT, formatted according to
   `icicle-default-in-prompt-format-function'.

In the existing PROMPT before modification, recognizes inclusion of
a default value according to these possible patterns:

 `minibuffer-default-in-prompt-regexps'
 \"(default ___):\"
 \"(default is ___):\"
 \" [___] \""
  (when (consp default) (setq default  (car default)))
  (dolist                      ; Remove the default, if already there.
      (rgx  (if (boundp 'minibuffer-default-in-prompt-regexps)
                minibuffer-default-in-prompt-regexps
              '(("\\( (default\\(?: is\\)? \\(.*\\))\\):? \\'"  1)
                ("\\( \\[.*\\]\\):? *\\'"                       1))))
    (setq prompt  (replace-regexp-in-string
                   (car rgx) "" prompt nil nil (cadr rgx))))
  (if (and default  include)        ; Add non-nil DEFAULT, if INCLUDE.
      (replace-regexp-in-string
       ".*\\(\\): *\\'"
       (funcall icicle-default-in-prompt-format-function default)
       prompt nil t 1)
    prompt))

(defcustom icicle-default-in-prompt-format-function
           (lambda (default) (format " (%s)" default))
  "Function that formats the default value to include in the prompt.
The function must accept the default value (a string) as its (first)
argument and return a string, which is prepended to the first
occurrence of `: ' in the prompt.  This option has no effect unless
`icicle-default-value' is t."
  :group 'Icicles-Miscellaneous :type 'function)





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-08-25 15:19               ` Lars Ingebrigtsen
  2020-08-25 15:34                 ` Drew Adams
@ 2020-08-25 16:19                 ` Stefan Kangas
  2020-08-25 18:23                 ` Juri Linkov
  2 siblings, 0 replies; 55+ messages in thread
From: Stefan Kangas @ 2020-08-25 16:19 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Dani Moncayo, Stefan Monnier, 12443

Lars Ingebrigtsen <larsi@gnus.org> writes:

> I like it.  I just grepped for '(default %' just to see how this would
> look in practice.  Most of them look good:

Agreed.

> (defun format-prompt (prompt default &rest format-args)
>   )

Sounds good to me.





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-08-25 15:19               ` Lars Ingebrigtsen
  2020-08-25 15:34                 ` Drew Adams
  2020-08-25 16:19                 ` Stefan Kangas
@ 2020-08-25 18:23                 ` Juri Linkov
  2020-08-25 19:12                   ` Lars Ingebrigtsen
  2020-08-25 20:00                   ` Stefan Monnier
  2 siblings, 2 replies; 55+ messages in thread
From: Juri Linkov @ 2020-08-25 18:23 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Dani Moncayo, Stefan Kangas, Stefan Monnier, 12443

> However, there's things like:
>
> 	 (setq from-coding (read-coding-system
> 			    (format "Recode filename %s from (default %s): "
> 				    filename default-coding)
> 			    default-coding))
>
> These are surprisingly rare, but, uhm...  perhaps format-prompt could
> take a format string?  The function would then look like:
>
> (defun format-prompt (prompt default &rest format-args)
>   )
>
> where it would call `format' on PROMPT and FORMAT-ARGS.
>
> So that would then be:
>
> 	 (setq from-coding (read-coding-system
> 			    (format-prompt "Recode filename %s"
>                                             default-coding filename)
> 			    default-coding))

Simpler would be to format arguments separately:

	 (setq from-coding (read-coding-system
			    (format-prompt (format "Recode filename %s from"
                                                   filename)
				           default-coding)
			    default-coding))

that would allow easier replacement of 'format' with 'gettext' later:

	 (setq from-coding (read-coding-system
			    (format-prompt (gettext "Recode filename %s from"
                                                     filename)
				           default-coding)
			    default-coding))





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-08-25 18:23                 ` Juri Linkov
@ 2020-08-25 19:12                   ` Lars Ingebrigtsen
  2020-08-25 20:00                   ` Stefan Monnier
  1 sibling, 0 replies; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-08-25 19:12 UTC (permalink / raw)
  To: Juri Linkov; +Cc: Dani Moncayo, Stefan Kangas, Stefan Monnier, 12443

Juri Linkov <juri@jurta.org> writes:

>> 	 (setq from-coding (read-coding-system
>> 			    (format-prompt "Recode filename %s"
>>                                             default-coding filename)
>> 			    default-coding))
>
> Simpler would be to format arguments separately:
>
> 	 (setq from-coding (read-coding-system
> 			    (format-prompt (format "Recode filename %s from"
>                                                    filename)
> 				           default-coding)
> 			    default-coding))

Yeah, but that's longer and more awkward, isn't it?

> that would allow easier replacement of 'format' with 'gettext' later:
>
> 	 (setq from-coding (read-coding-system
> 			    (format-prompt (gettext "Recode filename %s from"
>                                                      filename)
> 				           default-coding)
> 			    default-coding))

I don't think we have to have gettexting in mind, because that's never
gonna happen.  :-)

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-08-25 18:23                 ` Juri Linkov
  2020-08-25 19:12                   ` Lars Ingebrigtsen
@ 2020-08-25 20:00                   ` Stefan Monnier
  2020-08-26 12:10                     ` Lars Ingebrigtsen
  1 sibling, 1 reply; 55+ messages in thread
From: Stefan Monnier @ 2020-08-25 20:00 UTC (permalink / raw)
  To: Juri Linkov; +Cc: Lars Ingebrigtsen, Dani Moncayo, Stefan Kangas, 12443

> that would allow easier replacement of 'format' with 'gettext' later:
>
> 	 (setq from-coding (read-coding-system
> 			    (format-prompt (gettext "Recode filename %s from"
>                                                      filename)
> 				           default-coding)
> 			    default-coding))

Couldn't `format-prompt` do the `gettext` internally?


        Stefan






^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-08-25 20:00                   ` Stefan Monnier
@ 2020-08-26 12:10                     ` Lars Ingebrigtsen
  2020-08-27 18:48                       ` Juri Linkov
  0 siblings, 1 reply; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-08-26 12:10 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Dani Moncayo, Stefan Kangas, 12443

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> Couldn't `format-prompt` do the `gettext` internally?

Yup -- all the prompts fed to format-prompt are meant for display, so
that should be fine.

Anyway, I went ahead and pushed this to Emacs 28, but I've only
converted two (2) of the (at least) couple hundreds of callers, because
I wanted to see if there were any further comments on the concept (or
the interface) before digging into the rest of the call sites.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-08-26 12:10                     ` Lars Ingebrigtsen
@ 2020-08-27 18:48                       ` Juri Linkov
  2020-08-28 14:11                         ` Lars Ingebrigtsen
  2020-08-28 14:13                         ` bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy) Lars Ingebrigtsen
  0 siblings, 2 replies; 55+ messages in thread
From: Juri Linkov @ 2020-08-27 18:48 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Dani Moncayo, Stefan Kangas, Stefan Monnier, 12443

> Anyway, I went ahead and pushed this to Emacs 28,

Maybe the final separator (colon) should be customizable as well.
What if someone wants to use the same character as used in shell, i.e. '$'.
Then moving the currently hard-coded colon to the default value
" (default %s): " will allow the users to customize it to
" (default %s)$ "

> but I've only converted two (2) of the (at least) couple hundreds of
> callers, because I wanted to see if there were any further comments on
> the concept (or the interface) before digging into the rest of the
> call sites.

Shouldn't one of these calls (namely 'describe-function') be further
simplified with

diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index d302c05283..617f6ae5e8 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -151,9 +151,7 @@ describe-function
    (let* ((fn (function-called-at-point))
           (enable-recursive-minibuffers t)
           (val (completing-read
-                (if fn
-                    (format-prompt "Describe function" fn)
-                  "Describe function: ")
+                (format-prompt "Describe function" fn)
                 #'help--symbol-completion-table
                 (lambda (f) (or (fboundp f) (get f 'function-documentation)))
                 t nil nil

But something is still wrong - with the nil default value the prompt becomes:

  "Describe function (default nil): "

whereas it should be

  "Describe function: "

It seems 'format-prompt' should not use 'minibuffer-default-prompt-format'
when 'default' is nil.





^ permalink raw reply related	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-08-27 18:48                       ` Juri Linkov
@ 2020-08-28 14:11                         ` Lars Ingebrigtsen
  2020-08-28 15:21                           ` Stefan Monnier
  2020-08-28 14:13                         ` bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy) Lars Ingebrigtsen
  1 sibling, 1 reply; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-08-28 14:11 UTC (permalink / raw)
  To: Juri Linkov; +Cc: Dani Moncayo, Stefan Kangas, Stefan Monnier, 12443

Juri Linkov <juri@jurta.org> writes:

> Maybe the final separator (colon) should be customizable as well.
> What if someone wants to use the same character as used in shell, i.e. '$'.
> Then moving the currently hard-coded colon to the default value
> " (default %s): " will allow the users to customize it to
> " (default %s)$ "

Good idea.  I'll adjust the variable and the code.

> Shouldn't one of these calls (namely 'describe-function') be further
> simplified with
>
> diff --git a/lisp/help-fns.el b/lisp/help-fns.el
> index d302c05283..617f6ae5e8 100644
> --- a/lisp/help-fns.el
> +++ b/lisp/help-fns.el
> @@ -151,9 +151,7 @@ describe-function
>     (let* ((fn (function-called-at-point))
>            (enable-recursive-minibuffers t)
>            (val (completing-read
> -                (if fn
> -                    (format-prompt "Describe function" fn)
> -                  "Describe function: ")
> +                (format-prompt "Describe function" fn)
>                  #'help--symbol-completion-table
>                  (lambda (f) (or (fboundp f) (get f 'function-documentation)))
>                  t nil nil
>
> But something is still wrong - with the nil default value the prompt becomes:
>
>   "Describe function (default nil): "
>
> whereas it should be
>
>   "Describe function: "

Yes, that's why you can't use format-prompt when there's no default value.

> It seems 'format-prompt' should not use 'minibuffer-default-prompt-format'
> when 'default' is nil.

nil is a perfectly valid default value in many prompts.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-08-27 18:48                       ` Juri Linkov
  2020-08-28 14:11                         ` Lars Ingebrigtsen
@ 2020-08-28 14:13                         ` Lars Ingebrigtsen
  1 sibling, 0 replies; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-08-28 14:13 UTC (permalink / raw)
  To: Juri Linkov; +Cc: Dani Moncayo, Stefan Kangas, Stefan Monnier, 12443

Juri Linkov <juri@jurta.org> writes:

> Maybe the final separator (colon) should be customizable as well.
> What if someone wants to use the same character as used in shell, i.e. '$'.
> Then moving the currently hard-coded colon to the default value
> " (default %s): " will allow the users to customize it to
> " (default %s)$ "

Actually, I changed my mind -- the format-prompt function is about
formatting the default value.  There'll still be many, many prompts out
there that aren't sent through the function, so it'd be inconsistent to
allow changing the ": " on some prompts but not others.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-08-28 14:11                         ` Lars Ingebrigtsen
@ 2020-08-28 15:21                           ` Stefan Monnier
  2020-08-30 13:16                             ` Lars Ingebrigtsen
  2020-09-06 15:02                             ` Lars Ingebrigtsen
  0 siblings, 2 replies; 55+ messages in thread
From: Stefan Monnier @ 2020-08-28 15:21 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Dani Moncayo, Stefan Kangas, 12443

>> It seems 'format-prompt' should not use 'minibuffer-default-prompt-format'
>> when 'default' is nil.
> nil is a perfectly valid default value in many prompts.

No, `nil` should mean there's no default.
`"nil"` is a perfectly valid default value, OTOH.


        Stefan






^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-08-28 15:21                           ` Stefan Monnier
@ 2020-08-30 13:16                             ` Lars Ingebrigtsen
  2020-09-06 15:02                             ` Lars Ingebrigtsen
  1 sibling, 0 replies; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-08-30 13:16 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Dani Moncayo, Stefan Kangas, 12443

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>>> It seems 'format-prompt' should not use 'minibuffer-default-prompt-format'
>>> when 'default' is nil.
>> nil is a perfectly valid default value in many prompts.
>
> No, `nil` should mean there's no default.
> `"nil"` is a perfectly valid default value, OTOH.

I imagined there was a read-symbol function in use somewhere that used
symbols for completion/defaults, but apparently not -- it's all
completing-read with an intern at the end?

I'll adjust read-prompt to interpret a nil default as "no default".

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-08-28 15:21                           ` Stefan Monnier
  2020-08-30 13:16                             ` Lars Ingebrigtsen
@ 2020-09-06 15:02                             ` Lars Ingebrigtsen
  2020-09-06 17:46                               ` Lars Ingebrigtsen
  2021-01-17 19:05                               ` bug#12443: 24.2.50; Default values in the minibuffer prompt (fix Basil L. Contovounesios
  1 sibling, 2 replies; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-09-06 15:02 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Dani Moncayo, Stefan Kangas, 12443

OK, the first sweep has now landed on master (I basically grepped for
" (default %" and then did the changes.  Boy, were there many different
ways to "optionally add some defaults" in the code...

 78 files changed, 316 insertions(+), 453 deletions(-)

Look at all the lines saved!  :-)

There's also some of the prompting functions that have some support for
this general idea, but in different ways:

(defun read-regexp (prompt &optional defaults history)
[...]
	 (input (read-from-minibuffer
		 (cond ((string-match-p ":[ \t]*\\'" prompt)
			prompt)
		       ((and default (> (length default) 0))
			 (format "%s (default %s): " prompt
				 (query-replace-descr default)))
		       (t
			(format "%s: " prompt)))
		 nil nil nil (or history 'regexp-history) suggestions t)))

and

(defun read-input-method-name (prompt &optional default inhibit-null)
[...]
  (if default
      (setq prompt (format prompt default)))

Hm.  I had some further notes in here, but...  I put them in a buffer I
didn't save.

*sigh*

I should go have lunch.  I mean dinner.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no






^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-06 15:02                             ` Lars Ingebrigtsen
@ 2020-09-06 17:46                               ` Lars Ingebrigtsen
  2020-09-06 18:10                                 ` Lars Ingebrigtsen
                                                   ` (2 more replies)
  2021-01-17 19:05                               ` bug#12443: 24.2.50; Default values in the minibuffer prompt (fix Basil L. Contovounesios
  1 sibling, 3 replies; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-09-06 17:46 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Dani Moncayo, Stefan Kangas, 12443

Lars Ingebrigtsen <larsi@gnus.org> writes:

> OK, the first sweep has now landed on master (I basically grepped for
> " (default %" and then did the changes. 

The next step here is probably to fix the cases where there's a default,
but where the prompt doesn't mention them.  Like:

(defun last-chance (symbol)
[...]
                             (completing-read
                              "Symbol: " obarray
                              nil nil
                              one nil one)))))

`one' is the default here.  Has anybody written an Emacs-Lisp-aware
grep?  That can list all hits of completing-read where the seventh
parameter isn't nil?  It doesn't sound that difficult to do, but I
thought I'd ask before I start typing...

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-06 17:46                               ` Lars Ingebrigtsen
@ 2020-09-06 18:10                                 ` Lars Ingebrigtsen
  2020-09-06 18:49                                 ` Drew Adams
  2020-09-07 18:46                                 ` Juri Linkov
  2 siblings, 0 replies; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-09-06 18:10 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Dani Moncayo, Stefan Kangas, 12443

Lars Ingebrigtsen <larsi@gnus.org> writes:

> It doesn't sound that difficult to do, but I
> thought I'd ask before I start typing...

Well, whaddaya know, I started typing.  *sigh*

Anyway, this seems to actually work, and I'm amazed at how speedy an all
Emacs solution for this is: Running it over all the Lisp files on trunk
takes 3.2s (on this laptop).

Is this something Emacs should have?  It's not very...  user-friendly;
you have to write the predicate yourself, but it should allow people to
refactor with slightly more ease than with `M-x grep'.

Usage example:

  (lars-find-sexp-in-files "~/src/emacs/trunk/lisp"
			   "[.]el\\'"
			   'completing-read
			    (lambda (form)
			      (and (nth 7 form)
				   (stringp (nth 1 form)))))

(defun lars-find-sexp-in-files (directory match symbol predicate)
  (pop-to-buffer "*matches*")
  (let ((inhibit-read-only t))
    (erase-buffer)
    (dolist (file (directory-files-recursively directory match))
      (message "%s" file)
      (lars-find-sexp-in-file file symbol predicate))
    (grep-mode)))

(defun lars-find-sexp-in-file (file symbol predicate)
  (let ((lines
	 (with-temp-buffer
	   (insert-file-contents file)
	   (lars-find-sexp-in-buffer symbol predicate))))
    (dolist (line lines)
      (insert file ":" line))))

(defun lars-find-sexp-in-buffer (symbol predicate)
  (let ((lines nil))
    (while (re-search-forward (format "(%s[^-a-zA-Z0-9]" symbol) nil t)
      (let ((start (match-beginning 0)))
	(goto-char start)
	(let ((form (ignore-errors (read (current-buffer)))))
	  (when (and (eq (car form) symbol)
		     (funcall predicate form))
	    (goto-char (1+ start))
	    (push (format "%d:%s\n" (count-lines (point-min) start)
			  (buffer-substring-no-properties
			   (line-beginning-position) (line-end-position)))
		  lines)))))
    (nreverse lines)))

      


-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-06 17:46                               ` Lars Ingebrigtsen
  2020-09-06 18:10                                 ` Lars Ingebrigtsen
@ 2020-09-06 18:49                                 ` Drew Adams
  2020-09-06 20:18                                   ` Michael Heerdegen
  2020-09-07 18:46                                 ` Juri Linkov
  2 siblings, 1 reply; 55+ messages in thread
From: Drew Adams @ 2020-09-06 18:49 UTC (permalink / raw)
  To: Lars Ingebrigtsen, Stefan Monnier
  Cc: Michael Heerdegen, Dani Moncayo, Stefan Kangas, 12443

> Has anybody written an Emacs-Lisp-aware grep?  That can list all
> hits of completing-read where the seventh parameter isn't nil?
> It doesn't sound that difficult to do, but I thought I'd ask
> before I start typing...

Yes.  See Michael Heerdegen's `el-search.el',
in GNU ELPA:

https://elpa.gnu.org/packages/el-search.html

Not a grep.  Better.





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-06 18:49                                 ` Drew Adams
@ 2020-09-06 20:18                                   ` Michael Heerdegen
  2020-09-06 20:38                                     ` Lars Ingebrigtsen
  0 siblings, 1 reply; 55+ messages in thread
From: Michael Heerdegen @ 2020-09-06 20:18 UTC (permalink / raw)
  To: Drew Adams
  Cc: Lars Ingebrigtsen, 12443, Stefan Kangas, Stefan Monnier,
	Dani Moncayo

Drew Adams <drew.adams@oracle.com> writes:

> > Has anybody written an Emacs-Lisp-aware grep?  That can list all
> > hits of completing-read where the seventh parameter isn't nil?
> > It doesn't sound that difficult to do, but I thought I'd ask
> > before I start typing...
>
> Yes.  See Michael Heerdegen's `el-search.el',
> in GNU ELPA:

> https://elpa.gnu.org/packages/el-search.html

Yes, thanks for the mention.  I heard the author is thankful for any
feedback.

Michael.





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-06 20:18                                   ` Michael Heerdegen
@ 2020-09-06 20:38                                     ` Lars Ingebrigtsen
  2020-09-06 20:42                                       ` Lars Ingebrigtsen
  2020-09-06 21:50                                       ` Michael Heerdegen
  0 siblings, 2 replies; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-09-06 20:38 UTC (permalink / raw)
  To: Michael Heerdegen; +Cc: 12443, Stefan Kangas, Stefan Monnier, Dani Moncayo

Michael Heerdegen <michael_heerdegen@web.de> writes:

>> Yes.  See Michael Heerdegen's `el-search.el',
>> in GNU ELPA:
>
>> https://elpa.gnu.org/packages/el-search.html
>
> Yes, thanks for the mention.  I heard the author is thankful for any
> feedback.

Looks very impressive.

The emphasis on interactive searches is a bit awkward, though (at least
for me): I don't really want to be typing in pcase forms in the
minibuffer, and I just want to get a occur-like buffer in one step.  Is
that possible?

That would allow the users (i.e., programmers) to just put the stuff in
a function and use at will.  For instance

(el-search-occurs
  "~/src/emacs/trunk/lisp"
  '`(read-string ,(pred stringp) nil ,_ ,t)
  'recursive)

or something.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-06 20:38                                     ` Lars Ingebrigtsen
@ 2020-09-06 20:42                                       ` Lars Ingebrigtsen
  2020-09-06 21:55                                         ` Michael Heerdegen
  2020-09-06 21:50                                       ` Michael Heerdegen
  1 sibling, 1 reply; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-09-06 20:42 UTC (permalink / raw)
  To: Michael Heerdegen; +Cc: 12443, Stefan Kangas, Stefan Monnier, Dani Moncayo

Lars Ingebrigtsen <larsi@gnus.org> writes:

>> Yes, thanks for the mention.  I heard the author is thankful for any
>> feedback.
>
> Looks very impressive.

Oh, and `C-x `' (`next-error') doesn't work when jumping to the next
match in the El Occur buffer.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-06 20:38                                     ` Lars Ingebrigtsen
  2020-09-06 20:42                                       ` Lars Ingebrigtsen
@ 2020-09-06 21:50                                       ` Michael Heerdegen
  2020-09-06 21:56                                         ` Lars Ingebrigtsen
  1 sibling, 1 reply; 55+ messages in thread
From: Michael Heerdegen @ 2020-09-06 21:50 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 12443, Stefan Kangas, Stefan Monnier, Dani Moncayo

Lars Ingebrigtsen <larsi@gnus.org> writes:

> I don't really want to be typing in pcase forms in the minibuffer

The prompt has Elisp mode bindings and a separate history.  M-RET to
start occur.  If you really want everything to be non-interactive

> and I just want to get a occur-like buffer in one step.  Is that
> possible?
>
> That would allow the users (i.e., programmers) to just put the stuff in
> a function and use at will.  For instance
>
> (el-search-occurs
>   "~/src/emacs/trunk/lisp"
>   '`(read-string ,(pred stringp) nil ,_ ,t)
>   'recursive)

I didn't have this use case in mind.  The current way to do this would
write like

#+begin_src emacs-lisp
(el-search--occur
 (el-search-make-search
  '`(read-string ,(pred stringp) nil ,_ ,t)
  (lambda ()
    (el-search-stream-of-directory-files
     (expand-file-name "~/src/emacs/trunk/lisp")))))
#+end_src

I think.  Do you think this is worth an own defun?

Michael.





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-06 20:42                                       ` Lars Ingebrigtsen
@ 2020-09-06 21:55                                         ` Michael Heerdegen
  2020-09-06 21:57                                           ` Lars Ingebrigtsen
  0 siblings, 1 reply; 55+ messages in thread
From: Michael Heerdegen @ 2020-09-06 21:55 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 12443, Stefan Kangas, Stefan Monnier, Dani Moncayo

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Oh, and `C-x `' (`next-error') doesn't work when jumping to the next
> match in the El Occur buffer.

Does `C-x `' mean you need to type these two keys repeatedly?  (I made
`n' and `p' jump to the matches.)

Thanks,

Michael.





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-06 21:50                                       ` Michael Heerdegen
@ 2020-09-06 21:56                                         ` Lars Ingebrigtsen
  0 siblings, 0 replies; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-09-06 21:56 UTC (permalink / raw)
  To: Michael Heerdegen; +Cc: 12443, Stefan Kangas, Stefan Monnier, Dani Moncayo

Michael Heerdegen <michael_heerdegen@web.de> writes:

> I didn't have this use case in mind.  The current way to do this would
> write like
>
> #+begin_src emacs-lisp
> (el-search--occur
>  (el-search-make-search
>   '`(read-string ,(pred stringp) nil ,_ ,t)
>   (lambda ()
>     (el-search-stream-of-directory-files
>      (expand-file-name "~/src/emacs/trunk/lisp")))))
> #+end_src
>
> I think.  Do you think this is worth an own defun?

I think so -- I've been using el-search now for a few hours, and what
takes 90% of my time is typing `C-u M-x el-search-directory RET
~/src/emacs/trunk/lisp/ RET M-p' and then I can edit the pcase form, and
then RET, wait a bit, and O, wait some more, and then I can start
working.

Well, OK, it's really `C-u M-x M-p RET M-p RET M-p', but that's not kind
on the fingers, either.  :-)  I'd just like to plop the some expression in
*scratch* and eval it after each pcase edit.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-06 21:55                                         ` Michael Heerdegen
@ 2020-09-06 21:57                                           ` Lars Ingebrigtsen
  0 siblings, 0 replies; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-09-06 21:57 UTC (permalink / raw)
  To: Michael Heerdegen; +Cc: 12443, Stefan Kangas, Stefan Monnier, Dani Moncayo

Michael Heerdegen <michael_heerdegen@web.de> writes:

> Lars Ingebrigtsen <larsi@gnus.org> writes:
>
>> Oh, and `C-x `' (`next-error') doesn't work when jumping to the next
>> match in the El Occur buffer.
>
> Does `C-x `' mean you need to type these two keys repeatedly?  (I made
> `n' and `p' jump to the matches.)

Sorry -- not in the buffer itself, but from the .el buffers.  Like
grep/compile/etc works.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-06 17:46                               ` Lars Ingebrigtsen
  2020-09-06 18:10                                 ` Lars Ingebrigtsen
  2020-09-06 18:49                                 ` Drew Adams
@ 2020-09-07 18:46                                 ` Juri Linkov
  2020-09-07 19:27                                   ` Lars Ingebrigtsen
  2020-09-07 20:11                                   ` Lars Ingebrigtsen
  2 siblings, 2 replies; 55+ messages in thread
From: Juri Linkov @ 2020-09-07 18:46 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 12443

> The next step here is probably to fix the cases where there's a default,
> but where the prompt doesn't mention them.  Like:

Are you sure about this change in 1921d2176b?

diff --git a/lisp/tab-bar.el b/lisp/tab-bar.el
index d8f932e7a4..56c936e773 100644
--- a/lisp/tab-bar.el
+++ b/lisp/tab-bar.el
@@ -1028,7 +1028,7 @@ tab-bar-rename-tab
           (tab-index (or current-prefix-arg (1+ (tab-bar--current-tab-index tabs))))
           (tab-name (alist-get 'name (nth (1- tab-index) tabs))))
      (list (read-from-minibuffer
-            "New name for tab (leave blank for automatic naming): "
+            (format-prompt "New name for tab" tab-name)
             nil nil nil nil tab-name)
            current-prefix-arg)))
   (let* ((tabs (funcall tab-bar-tabs-function))
@@ -1057,7 +1057,7 @@ tab-bar-rename-tab-by-name
                                               (alist-get 'name tab))
                                             (funcall tab-bar-tabs-function)))))
      (list tab-name (read-from-minibuffer
-                     "New name for tab (leave blank for automatic naming): "
+                     (format-prompt "New name for tab" tab-name)
                      nil nil nil nil tab-name))))
   (tab-bar-rename-tab new-name (1+ (tab-bar--tab-index-by-name tab-name))))
 

I'm not the author of this code, so I don't know how it should work,
but the old prompt with text "leave blank for automatic naming"
makes sense to me.





^ permalink raw reply related	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-07 18:46                                 ` Juri Linkov
@ 2020-09-07 19:27                                   ` Lars Ingebrigtsen
  2020-09-08 18:32                                     ` Juri Linkov
  2020-09-07 20:11                                   ` Lars Ingebrigtsen
  1 sibling, 1 reply; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-09-07 19:27 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 12443

Juri Linkov <juri@linkov.net> writes:

> Are you sure about this change in 1921d2176b?

No, I found it kinda puzzling.

>            (tab-name (alist-get 'name (nth (1- tab-index) tabs))))
>       (list (read-from-minibuffer
> -            "New name for tab (leave blank for automatic naming): "
> +            (format-prompt "New name for tab" tab-name)
>              nil nil nil nil tab-name)

The "automatic naming" defaults to tab-name, which is

  (alist-get 'name (nth (1- tab-index) tabs))

In my tests that was never nil, so the "leave blank" didn't seem
possible (and seemed misleading).  But I may well have missed something?

That is, there is no real way to get "automatic naming" interactively?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-07 18:46                                 ` Juri Linkov
  2020-09-07 19:27                                   ` Lars Ingebrigtsen
@ 2020-09-07 20:11                                   ` Lars Ingebrigtsen
  1 sibling, 0 replies; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-09-07 20:11 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 12443

(And perhaps I should have skipped that transform because it was puzzling
and less than "obviously right".)

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no






^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-07 19:27                                   ` Lars Ingebrigtsen
@ 2020-09-08 18:32                                     ` Juri Linkov
  2020-09-08 20:37                                       ` Lars Ingebrigtsen
  0 siblings, 1 reply; 55+ messages in thread
From: Juri Linkov @ 2020-09-08 18:32 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 12443

>> Are you sure about this change in 1921d2176b?
>
> No, I found it kinda puzzling.
>
>>            (tab-name (alist-get 'name (nth (1- tab-index) tabs))))
>>       (list (read-from-minibuffer
>> -            "New name for tab (leave blank for automatic naming): "
>> +            (format-prompt "New name for tab" tab-name)
>>              nil nil nil nil tab-name)
>
> The "automatic naming" defaults to tab-name, which is
>
>   (alist-get 'name (nth (1- tab-index) tabs))
>
> In my tests that was never nil, so the "leave blank" didn't seem
> possible (and seemed misleading).  But I may well have missed something?
>
> That is, there is no real way to get "automatic naming" interactively?

Here is what I see when trying the old prompt:

  (read-from-minibuffer
    "New name for tab (leave blank for automatic naming): "
    nil nil nil nil "tab-name")

Typing RET returns the empty string "".





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-08 18:32                                     ` Juri Linkov
@ 2020-09-08 20:37                                       ` Lars Ingebrigtsen
  2020-09-09 18:50                                         ` Juri Linkov
  0 siblings, 1 reply; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-09-08 20:37 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 12443

Juri Linkov <juri@linkov.net> writes:

> Here is what I see when trying the old prompt:
>
>   (read-from-minibuffer
>     "New name for tab (leave blank for automatic naming): "
>     nil nil nil nil "tab-name")
>
> Typing RET returns the empty string "".

D'oh.  I missed this bit:

Sixth arg DEFAULT-VALUE, if non-nil, should be a string, which is used
  as the default to ‘read’ if READ is non-nil and the user enters
  empty input.  But if READ is nil, this function does _not_ return
  DEFAULT-VALUE for empty input!  Instead, it returns the empty string.

I'll go over that commit and revert the bits with a nil READ.

But what a...  strange interface.  

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-08 20:37                                       ` Lars Ingebrigtsen
@ 2020-09-09 18:50                                         ` Juri Linkov
  2020-09-10 13:14                                           ` Lars Ingebrigtsen
  0 siblings, 1 reply; 55+ messages in thread
From: Juri Linkov @ 2020-09-09 18:50 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 12443

> Sixth arg DEFAULT-VALUE, if non-nil, should be a string, which is used
>   as the default to ‘read’ if READ is non-nil and the user enters
>   empty input.  But if READ is nil, this function does _not_ return
>   DEFAULT-VALUE for empty input!  Instead, it returns the empty string.
>
> But what a...  strange interface.

It seems this "default" value is needed here only for convenience
of retrieving it into the minibuffer for editing using the M-n key.





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-09 18:50                                         ` Juri Linkov
@ 2020-09-10 13:14                                           ` Lars Ingebrigtsen
  2020-09-11  9:11                                             ` Andrii Kolomoiets
  2020-09-12 19:04                                             ` Juri Linkov
  0 siblings, 2 replies; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-09-10 13:14 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 12443

Juri Linkov <juri@linkov.net> writes:

>> Sixth arg DEFAULT-VALUE, if non-nil, should be a string, which is used
>>   as the default to ‘read’ if READ is non-nil and the user enters
>>   empty input.  But if READ is nil, this function does _not_ return
>>   DEFAULT-VALUE for empty input!  Instead, it returns the empty string.
>>
>> But what a...  strange interface.
>
> It seems this "default" value is needed here only for convenience
> of retrieving it into the minibuffer for editing using the M-n key.

Ah, right.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-10 13:14                                           ` Lars Ingebrigtsen
@ 2020-09-11  9:11                                             ` Andrii Kolomoiets
  2020-09-11 12:53                                               ` Lars Ingebrigtsen
  2020-09-12 19:04                                             ` Juri Linkov
  1 sibling, 1 reply; 55+ messages in thread
From: Andrii Kolomoiets @ 2020-09-11  9:11 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Juri Linkov, 12443

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Juri Linkov <juri@linkov.net> writes:
>
>> It seems this "default" value is needed here only for convenience
>> of retrieving it into the minibuffer for editing using the M-n key.
>
> Ah, right.

Is it possible that changes related to this bug leads to broken
minibuffer-electric-default-mode?

Code to evaluate:

    (custom-set-variables
     '(minibuffer-eldef-shorten-default t))
    (minibuffer-electric-default-mode)
    (read-string "prompt (default foo): ")

In Emacs 27 prompt looks like "prompt [foo]: ". After input "z" prompt
will looks like "prompt: z".

In Emacs 28 prompt looks like "prompt (default foo): ". And after input
"z" prompt will looks like "promptz".





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-11  9:11                                             ` Andrii Kolomoiets
@ 2020-09-11 12:53                                               ` Lars Ingebrigtsen
  2020-09-14  8:40                                                 ` Andrii Kolomoiets
  0 siblings, 1 reply; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-09-11 12:53 UTC (permalink / raw)
  To: Andrii Kolomoiets; +Cc: Juri Linkov, 12443

Andrii Kolomoiets <andreyk.mad@gmail.com> writes:

> Is it possible that changes related to this bug leads to broken
> minibuffer-electric-default-mode?
>
> Code to evaluate:
>
>     (custom-set-variables
>      '(minibuffer-eldef-shorten-default t))
>     (minibuffer-electric-default-mode)
>     (read-string "prompt (default foo): ")
>
> In Emacs 27 prompt looks like "prompt [foo]: ". After input "z" prompt
> will looks like "prompt: z".
>
> In Emacs 28 prompt looks like "prompt (default foo): ". And after input
> "z" prompt will looks like "promptz".

Yup -- it was 19bff57f609854f257780f20043e96fb2eddc713 that included the
": " bit in the portion to be replaced.  This should now be fixed on the
trunk.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-10 13:14                                           ` Lars Ingebrigtsen
  2020-09-11  9:11                                             ` Andrii Kolomoiets
@ 2020-09-12 19:04                                             ` Juri Linkov
  2020-09-13  8:53                                               ` Juri Linkov
  2020-09-13 13:00                                               ` Lars Ingebrigtsen
  1 sibling, 2 replies; 55+ messages in thread
From: Juri Linkov @ 2020-09-12 19:04 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 12443

There is another consequence from the commit de4f347901a.

Is there a real need to duplicate the default value in read-file-name
when the default value is already shown as initial input?

For example, now after typing 'C-x 5 d' (dired-other-frame), the prompt
becomes overly long with the duplicate long default value that now
doesn't fit into the frame width:

  Dired in other frame (directory) [/very/long/path/with/lots/of/subdirectories/]: /very/long/path/with/lots/of/subdirectories/

Here the default value is in square brackets [...] because of my
customized prompt " [%s]" for minibuffer-default-prompt-format.
But with the default format " (default %s)" the prompt would be even longer.





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-12 19:04                                             ` Juri Linkov
@ 2020-09-13  8:53                                               ` Juri Linkov
  2020-09-13 14:30                                                 ` Eli Zaretskii
  2020-09-13 13:00                                               ` Lars Ingebrigtsen
  1 sibling, 1 reply; 55+ messages in thread
From: Juri Linkov @ 2020-09-13  8:53 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 12443

> There is another consequence from the commit de4f347901a.

Sorry, I meant “another case from another commit”.

> Is there a real need to duplicate the default value in read-file-name
> when the default value is already shown as initial input?
>
> For example, now after typing 'C-x 5 d' (dired-other-frame), the prompt
> becomes overly long with the duplicate long default value that now
> doesn't fit into the frame width:
>
>   Dired in other frame (directory) [/very/long/path/with/lots/of/subdirectories/]: /very/long/path/with/lots/of/subdirectories/
>
> Here the default value is in square brackets [...] because of my
> customized prompt " [%s]" for minibuffer-default-prompt-format.
> But with the default format " (default %s)" the prompt would be even longer.

Another case is just ‘C-x d’ (dired) - it displays the duplicate
directory name too: in the default value and the same in the initial input:

  Dired (directory) (default /tmp/foo/bar/): /tmp/foo/bar/





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-12 19:04                                             ` Juri Linkov
  2020-09-13  8:53                                               ` Juri Linkov
@ 2020-09-13 13:00                                               ` Lars Ingebrigtsen
  1 sibling, 0 replies; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-09-13 13:00 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 12443

Juri Linkov <juri@linkov.net> writes:

> Is there a real need to duplicate the default value in read-file-name
> when the default value is already shown as initial input?
>
> For example, now after typing 'C-x 5 d' (dired-other-frame), the prompt
> becomes overly long with the duplicate long default value that now
> doesn't fit into the frame width:
>
>   Dired in other frame (directory)
> [/very/long/path/with/lots/of/subdirectories/]:
> /very/long/path/with/lots/of/subdirectories/
>
> Here the default value is in square brackets [...] because of my
> customized prompt " [%s]" for minibuffer-default-prompt-format.
> But with the default format " (default %s)" the prompt would be even longer.

Yup; I didn't test read-file-name enough before doing these changes, and
I have now reverted them.  read-file-name's DEFAULT is kinda like other
function's INITIAL, if you squint at it a bit.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-13  8:53                                               ` Juri Linkov
@ 2020-09-13 14:30                                                 ` Eli Zaretskii
  0 siblings, 0 replies; 55+ messages in thread
From: Eli Zaretskii @ 2020-09-13 14:30 UTC (permalink / raw)
  To: Juri Linkov; +Cc: larsi, 12443

> From: Juri Linkov <juri@linkov.net>
> Date: Sun, 13 Sep 2020 11:53:10 +0300
> Cc: 12443@debbugs.gnu.org
> 
> Another case is just ‘C-x d’ (dired) - it displays the duplicate
> directory name too: in the default value and the same in the initial input:
> 
>   Dired (directory) (default /tmp/foo/bar/): /tmp/foo/bar/

Yes, I've noticed this as well.  We need to fix this.





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-11 12:53                                               ` Lars Ingebrigtsen
@ 2020-09-14  8:40                                                 ` Andrii Kolomoiets
  2020-09-14 11:15                                                   ` Lars Ingebrigtsen
  0 siblings, 1 reply; 55+ messages in thread
From: Andrii Kolomoiets @ 2020-09-14  8:40 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Juri Linkov, 12443

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Andrii Kolomoiets <andreyk.mad@gmail.com> writes:
>
>> Code to evaluate:
>>
>>     (custom-set-variables
>>      '(minibuffer-eldef-shorten-default t))
>>     (minibuffer-electric-default-mode)
>>     (read-string "prompt (default foo): ")
>>
>> In Emacs 27 prompt looks like "prompt [foo]: ". After input "z" prompt
>> will looks like "prompt: z".
>>
>> In Emacs 28 prompt looks like "prompt (default foo): ". And after input
>> "z" prompt will looks like "promptz".
>
> Yup -- it was 19bff57f609854f257780f20043e96fb2eddc713 that included the
> ": " bit in the portion to be replaced.  This should now be fixed on the
> trunk.

Indeed. Thanks!

But the 'minibuffer-eldef-shorten-default' variable is still ignored.  The
"(default ...)" part of the prompt is not shortened to "[...]".





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-14  8:40                                                 ` Andrii Kolomoiets
@ 2020-09-14 11:15                                                   ` Lars Ingebrigtsen
  2020-10-13  2:31                                                     ` Lars Ingebrigtsen
  0 siblings, 1 reply; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-09-14 11:15 UTC (permalink / raw)
  To: Andrii Kolomoiets; +Cc: Juri Linkov, 12443

Andrii Kolomoiets <andreyk.mad@gmail.com> writes:

> But the 'minibuffer-eldef-shorten-default' variable is still ignored.  The
> "(default ...)" part of the prompt is not shortened to "[...]".

Ah, yes.  That bit wasn't tested enough (or perhaps at all, come to
think of it).  I've now pushed a fix (after testing and comparing with
how this worked in Emacs 27), so I think this should work now.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy)
  2020-09-14 11:15                                                   ` Lars Ingebrigtsen
@ 2020-10-13  2:31                                                     ` Lars Ingebrigtsen
  0 siblings, 0 replies; 55+ messages in thread
From: Lars Ingebrigtsen @ 2020-10-13  2:31 UTC (permalink / raw)
  To: Andrii Kolomoiets; +Cc: 12443, Juri Linkov

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Andrii Kolomoiets <andreyk.mad@gmail.com> writes:
>
>> But the 'minibuffer-eldef-shorten-default' variable is still ignored.  The
>> "(default ...)" part of the prompt is not shortened to "[...]".
>
> Ah, yes.  That bit wasn't tested enough (or perhaps at all, come to
> think of it).  I've now pushed a fix (after testing and comparing with
> how this worked in Emacs 27), so I think this should work now.

I think basically we've gotten as far as we're going to in this bug
report -- the basic mechanism has been introduced, and the majority of
the callers have been converted, so I'm closing this bug report.  I'm
sure there's more details to be fixed here, but handling those in new,
individual bug reports would probably be better.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix
  2020-09-06 15:02                             ` Lars Ingebrigtsen
  2020-09-06 17:46                               ` Lars Ingebrigtsen
@ 2021-01-17 19:05                               ` Basil L. Contovounesios
  2021-01-18 16:40                                 ` Lars Ingebrigtsen
  1 sibling, 1 reply; 55+ messages in thread
From: Basil L. Contovounesios @ 2021-01-17 19:05 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 12443, Stefan Kangas, Stefan Monnier, Dani Moncayo

[-- Attachment #1: Type: text/plain, Size: 915 bytes --]

Lars Ingebrigtsen <larsi@gnus.org> writes:

> OK, the first sweep has now landed on master (I basically grepped for
> " (default %" and then did the changes.  Boy, were there many different
> ways to "optionally add some defaults" in the code...
>
>  78 files changed, 316 insertions(+), 453 deletions(-)
>
> Look at all the lines saved!  :-)
>
> There's also some of the prompting functions that have some support for
> this general idea, but in different ways:
>
> (defun read-regexp (prompt &optional defaults history)
> [...]
> 	 (input (read-from-minibuffer
> 		 (cond ((string-match-p ":[ \t]*\\'" prompt)
> 			prompt)
> 		       ((and default (> (length default) 0))
> 			 (format "%s (default %s): " prompt
> 				 (query-replace-descr default)))
> 		       (t
> 			(format "%s: " prompt)))
> 		 nil nil nil (or history 'regexp-history) suggestions t)))

Any reason this function wasn't changed in the end?


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Use-format-prompt-in-read-regexp.patch --]
[-- Type: text/x-diff, Size: 1285 bytes --]

From 3d3423ef6705cf157e279c95e5eb8a35b8ca78fb Mon Sep 17 00:00:00 2001
From: "Basil L. Contovounesios" <contovob@tcd.ie>
Date: Sun, 17 Jan 2021 18:56:50 +0000
Subject: [PATCH] Use format-prompt in read-regexp.

* lisp/replace.el (read-regexp): Use format-prompt (bug#12443).
---
 lisp/replace.el | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/lisp/replace.el b/lisp/replace.el
index d41dc98a0d..8f8cbfac54 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -866,13 +866,10 @@ read-regexp
 	 ;; Do not automatically add default to the history for empty input.
 	 (history-add-new-input nil)
 	 (input (read-from-minibuffer
-		 (cond ((string-match-p ":[ \t]*\\'" prompt)
-			prompt)
-		       ((and default (> (length default) 0))
-			 (format "%s (default %s): " prompt
-				 (query-replace-descr default)))
-		       (t
-			(format "%s: " prompt)))
+                 (if (string-match-p ":[ \t]*\\'" prompt)
+                     prompt
+                   (format-prompt prompt (and (length> default 0)
+                                              (query-replace-descr default))))
 		 nil nil nil (or history 'regexp-history) suggestions t)))
     (if (equal input "")
 	;; Return the default value when the user enters empty input.
-- 
2.29.2


[-- Attachment #3: Type: text/plain, Size: 11 bytes --]


-- 
Basil

^ permalink raw reply related	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix
  2021-01-17 19:05                               ` bug#12443: 24.2.50; Default values in the minibuffer prompt (fix Basil L. Contovounesios
@ 2021-01-18 16:40                                 ` Lars Ingebrigtsen
  2021-01-18 18:06                                   ` Basil L. Contovounesios
  0 siblings, 1 reply; 55+ messages in thread
From: Lars Ingebrigtsen @ 2021-01-18 16:40 UTC (permalink / raw)
  To: Basil L. Contovounesios
  Cc: 12443, Stefan Kangas, Stefan Monnier, Dani Moncayo

"Basil L. Contovounesios" <contovob@tcd.ie> writes:

> Any reason this function wasn't changed in the end?

[...]

> * lisp/replace.el (read-regexp): Use format-prompt (bug#12443).

No, I think I just missed it.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 55+ messages in thread

* bug#12443: 24.2.50; Default values in the minibuffer prompt (fix
  2021-01-18 16:40                                 ` Lars Ingebrigtsen
@ 2021-01-18 18:06                                   ` Basil L. Contovounesios
  0 siblings, 0 replies; 55+ messages in thread
From: Basil L. Contovounesios @ 2021-01-18 18:06 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 12443, Stefan Kangas, Stefan Monnier, Dani Moncayo

Lars Ingebrigtsen <larsi@gnus.org> writes:

> "Basil L. Contovounesios" <contovob@tcd.ie> writes:
>
>> Any reason this function wasn't changed in the end?
>
> [...]
>
>> * lisp/replace.el (read-regexp): Use format-prompt (bug#12443).
>
> No, I think I just missed it.

Thanks, pushed.

Use format-prompt in read-regexp.
bdb9889f78 2021-01-18 17:58:42 +0000
https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=bdb9889f784dc6113a74c259a53cf0623e49ab2d

-- 
Basil





^ permalink raw reply	[flat|nested] 55+ messages in thread

end of thread, other threads:[~2021-01-18 18:06 UTC | newest]

Thread overview: 55+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-09-14 13:53 bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy) Dani Moncayo
2012-09-14 15:56 ` Stefan Monnier
2012-09-14 16:39   ` Drew Adams
2012-09-14 19:17     ` Dani Moncayo
2012-09-14 19:10   ` Dani Moncayo
2012-09-14 19:41     ` Stefan Monnier
2012-09-14 20:42       ` Dani Moncayo
2012-09-14 20:50         ` Jambunathan K
2012-09-14 20:55           ` Drew Adams
2012-09-14 22:47         ` Juri Linkov
2020-08-25 12:30           ` Lars Ingebrigtsen
2020-08-25 12:55             ` Stefan Kangas
2020-08-25 13:45               ` Stefan Monnier
2020-08-25 15:19               ` Lars Ingebrigtsen
2020-08-25 15:34                 ` Drew Adams
2020-08-25 16:19                 ` Stefan Kangas
2020-08-25 18:23                 ` Juri Linkov
2020-08-25 19:12                   ` Lars Ingebrigtsen
2020-08-25 20:00                   ` Stefan Monnier
2020-08-26 12:10                     ` Lars Ingebrigtsen
2020-08-27 18:48                       ` Juri Linkov
2020-08-28 14:11                         ` Lars Ingebrigtsen
2020-08-28 15:21                           ` Stefan Monnier
2020-08-30 13:16                             ` Lars Ingebrigtsen
2020-09-06 15:02                             ` Lars Ingebrigtsen
2020-09-06 17:46                               ` Lars Ingebrigtsen
2020-09-06 18:10                                 ` Lars Ingebrigtsen
2020-09-06 18:49                                 ` Drew Adams
2020-09-06 20:18                                   ` Michael Heerdegen
2020-09-06 20:38                                     ` Lars Ingebrigtsen
2020-09-06 20:42                                       ` Lars Ingebrigtsen
2020-09-06 21:55                                         ` Michael Heerdegen
2020-09-06 21:57                                           ` Lars Ingebrigtsen
2020-09-06 21:50                                       ` Michael Heerdegen
2020-09-06 21:56                                         ` Lars Ingebrigtsen
2020-09-07 18:46                                 ` Juri Linkov
2020-09-07 19:27                                   ` Lars Ingebrigtsen
2020-09-08 18:32                                     ` Juri Linkov
2020-09-08 20:37                                       ` Lars Ingebrigtsen
2020-09-09 18:50                                         ` Juri Linkov
2020-09-10 13:14                                           ` Lars Ingebrigtsen
2020-09-11  9:11                                             ` Andrii Kolomoiets
2020-09-11 12:53                                               ` Lars Ingebrigtsen
2020-09-14  8:40                                                 ` Andrii Kolomoiets
2020-09-14 11:15                                                   ` Lars Ingebrigtsen
2020-10-13  2:31                                                     ` Lars Ingebrigtsen
2020-09-12 19:04                                             ` Juri Linkov
2020-09-13  8:53                                               ` Juri Linkov
2020-09-13 14:30                                                 ` Eli Zaretskii
2020-09-13 13:00                                               ` Lars Ingebrigtsen
2020-09-07 20:11                                   ` Lars Ingebrigtsen
2021-01-17 19:05                               ` bug#12443: 24.2.50; Default values in the minibuffer prompt (fix Basil L. Contovounesios
2021-01-18 16:40                                 ` Lars Ingebrigtsen
2021-01-18 18:06                                   ` Basil L. Contovounesios
2020-08-28 14:13                         ` bug#12443: 24.2.50; Default values in the minibuffer prompt (fix inconsisntecy) Lars Ingebrigtsen

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).