[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#55205: 28.1.50; completion--replace illegally mutates completion can
From: |
Daniel Mendler |
Subject: |
bug#55205: 28.1.50; completion--replace illegally mutates completion candidates |
Date: |
Mon, 2 May 2022 18:38:37 +0200 |
On 5/2/22 18:34, Stefan Monnier wrote:
>> Completion takes text typed by the user and produces strings that the
>> user could possibly mean by typing what he/she typed. Some part(s) of
>> the candidates can legitimately come from what the user typed, some
>> other part(s) could be invented by the completion machinery more or
>> less out of thin air. Why should anyone expect this meat-grinder to
>> refrain from destructively modifying any of the involved strings?
>
> Because the overwhelming majority of strings are never modified.
> It's very unusual to modify a string by side effect (as opposed to
> creating a new string object via `concat`, `substring`, ...).
> This is true in most languages, AFAICT, but it's definitely true in
> ELisp.
One should add that *by definition* of the completion API, mutations of
the supplied candidate strings don't take place. For example you can run
completion on strings from the obarray:
(completing-read "Symbol: " obarray)
It would be quite harmful if the symbol names are destroyed in the
process. I don't see the completion API as a meat-grinder. It is all
quite well-defined.
Daniel
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, (continued)
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, Lars Ingebrigtsen, 2022/05/01
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, Eli Zaretskii, 2022/05/01
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, Dmitry Gutov, 2022/05/01
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, Eli Zaretskii, 2022/05/01
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, Dmitry Gutov, 2022/05/02
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, Eli Zaretskii, 2022/05/02
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, Dmitry Gutov, 2022/05/02
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, Stefan Monnier, 2022/05/02
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, Eli Zaretskii, 2022/05/02
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, Stefan Monnier, 2022/05/02
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates,
Daniel Mendler <=
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, Eli Zaretskii, 2022/05/02
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, Eli Zaretskii, 2022/05/02
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, Daniel Mendler, 2022/05/02
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, Eli Zaretskii, 2022/05/02
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, Daniel Mendler, 2022/05/02
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, Eli Zaretskii, 2022/05/02
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, Daniel Mendler, 2022/05/02
- bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, Stefan Monnier, 2022/05/02
bug#55205: 28.1.50; completion--replace illegally mutates completion candidates, Daniel Mendler, 2022/05/01