[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: RE: [External] : completing-read depricated initial-input
From: |
Christopher Dimech |
Subject: |
Re: RE: [External] : completing-read depricated initial-input |
Date: |
Fri, 24 Jun 2022 10:09:27 +0200 |
> Sent: Friday, June 24, 2022 at 12:10 PM
> From: "Drew Adams" <drew.adams@oracle.com>
> To: "Stefan Monnier" <monnier@iro.umontreal.ca>, "Michael Heerdegen"
> <michael_heerdegen@web.de>
> Cc: "Arash Esbati" <arash@gnu.org>, "Christopher Dimech" <dimech@gmx.com>,
> "eliz@gnu.org" <eliz@gnu.org>, "Help Gnu Emacs" <help-gnu-emacs@gnu.org>,
> "carlmarcos@tutanota.com" <carlmarcos@tutanota.com>
> Subject: RE: [External] : Re: completing-read depricated initial-input
>
> > I haven't really followed that thread, but IMO the `initial-input` arg
> > should be changed into `setup-function` (so we don't have to use the
> > hideous `minibuffer-with-setup-function` hack) and using a string there
> > should be deprecated (the rare places where inserting an initial string
> > makes sense can use a setup-function instead).
>
> No comment on all of that. At least not until
> it becomes something real to worry about. ;-)
>
> > Also the prompt handling should be changed so that it automatically
> > inserts the default into the prompt. Doing that in a reliable and
> > backward compatible way is not completely straightforward, tho, so
> > maybe a simpler solution is to introduce a whole new function instead.
> >
> > Then a user-customization could also be used to choose between the
> > current default (where the default is added to the prompt) or the other
> > option of always inserting the default as initial value (pre-selected
> > so it can be deleted with a quick DEL).
>
> Possible insertion of the default value, and its
> possible addition to the prompt, should be handled
> more generally than just for completion.
>
> Ideally the choice should belong mainly to users,
> and it should apply to pretty much all minibuffer
> reading functions that allow for a default value.
Quite right. The ability to show an entry rather than always
keeping it blank should be kept.
> _____
>
> FWIW, Icicle mode handles this with user option
> `icicle-default-value'.
>
> When the value's non-`nil' and arg INITIAL-INPUT
> of minibuffer-reading functions is `nil' or "",
> the DEFAULT-VALUE argument can be inserted into
> the minibuffer as initial input.
>
> For `completing-read', `read-file-name'[*], and
> `read-string', if the option value is `t' then the
> default value is added to the prompt as a hint.
>
> Adding the default value to the prompt corresponds
> to a more or less conventional behavior of vanilla
> Emacs. But Emacs doesn't do that systematically.
> Instead, it hard-codes default values into prompts
> here and there. It's up to the particular command
> to decide about this - ad hoc.
>
> By design, individual Icicles commands never add
> the default value to a prompt themselves. Instead,
> option `icicle-default-value' controls the behavior.
>
> Non-`nil' and non-`t' inserts the default value
> into the minibuffer as the initial value.
>
> `nil' neither inserts the default value nor adds
> it to the prompt.
>
> (If the value is `t' or `nil', you can always use
> `M-n' to insert the default value manually.)
>
> If you often want to use or edit the default value,
> then consider setting `icicle-default-value' to
> non-`nil' and non-`t'. If you rarely do so, then
> consider using `nil' or `t'.
>
> A non-`nil', non-`t' value also controls whether
> or not the inserted default value is preselected
> (as the active region), and where to leave the
> cursor: at its beginning or end.
>
> Preselecting the value can be useful in Delete
> Selection mode, because it makes it easy to
> replace that value by typing characters, or delete
> it by hitting `DEL' or `C-d'. (However, all of
> the initial input is deleted with `C-d' or `DEL',
> which is inconvenient if you just want to edit it
> slightly.)
>
> Summary of values:
>
> Don't insert default into minibuffer:
>
> nil - Don't add to prompt.
> t - Add to prompt if `completing-read',
> `read-file-name', or `read-string'.
>
> Do insert default into minibuffer:
>
> `insert-start' - Leave cursor at start.
> `insert-end' - Leave cursor at end.
> `preselect-start' - Preselect and put cursor
> at beginning.
> `preselect-end' - Preselect and put cursor
> at end.
>
> `t' is the default. (I use `insert-end'.)
> _____
>
> When Icicles automatically puts the default value
> into the prompt, as a hint, it also replaces it
> there if put there already by some command, so
> the hint format will be systematically the same.
>
> Option `icicle-default-in-prompt-format-function'
> defines the format to use. By default it's this:
> (lambda (default) (format " (%s)" default))
>
> Function `icicle-handle-default-for-prompt' does
> the work:
> __
>
> (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 ___):"
> " [___] "
> __
>
> Icicles just reuses vanilla Emacs variable
> `minibuffer-default-in-prompt-regexps', which is
> defined for `minibuffer-electric-default-mode'.
>
> 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.
>
> (`minibuffer-electric-default-mode'e tries to show
> a default value in a prompt only when hitting RET
> yields that value. If you edit the minibuffer text
> so it's no longer the default value, the default's
> removed from the prompt.)
> ____________________
>
>
> [*]: However, for `read-file-name', if option
> `insert-default-directory' is non-`nil' then, to
> avoid duplication:
>
> * If the default value is the same as the value of
> `default-directory' then it's not added to the
> prompt.
>
> * If the default value is added to the prompt then
> it's first made relative to `default-directory'.
>
>
- Re: RE: [External] : completing-read depricated initial-input, (continued)
- Re: RE: [External] : completing-read depricated initial-input, Christopher Dimech, 2022/06/24
- Re: [External] : Re: completing-read depricated initial-input, Emanuel Berg, 2022/06/25
- RE: [External] : Re: completing-read depricated initial-input, Drew Adams, 2022/06/25
- Re: [External] : Re: completing-read depricated initial-input, Emanuel Berg, 2022/06/26
- RE: [External] : Re: completing-read depricated initial-input, Drew Adams, 2022/06/26
- Re: [External] : Re: completing-read depricated initial-input, Emanuel Berg, 2022/06/26
- Re: completing-read depricated initial-input, Christopher Dimech, 2022/06/24
- Re: completing-read depricated initial-input, Jean Louis, 2022/06/24
- Re: completing-read depricated initial-input, Christopher Dimech, 2022/06/24
- RE: [External] : Re: completing-read depricated initial-input, Drew Adams, 2022/06/23
- Re: RE: [External] : completing-read depricated initial-input,
Christopher Dimech <=
- Re: completing-read depricated initial-input, Emanuel Berg, 2022/06/23
- Re: completing-read depricated initial-input, Jean Louis, 2022/06/23
- Re: completing-read depricated initial-input, Emanuel Berg, 2022/06/23
- Re: completing-read depricated initial-input, Jean Louis, 2022/06/24
- Re: completing-read depricated initial-input, Jean Louis, 2022/06/23
- Re: completing-read depricated initial-input, Jean Louis, 2022/06/23
- RE: [External] : Re: completing-read depricated initial-input, Drew Adams, 2022/06/23
- Re: completing-read depricated initial-input, Arash Esbati, 2022/06/23
- Re: completing-read depricated initial-input, Christopher Dimech, 2022/06/23
- Re: completing-read depricated initial-input, Emanuel Berg, 2022/06/23