all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Juri Linkov <juri@linkov.net>
To: Eric Hanchrow <eric.hanchrow@gmail.com>
Cc: 25591@debbugs.gnu.org
Subject: bug#25591: 25.1; M-% offers to repeat last search, but forgets that it was a "symbol" search
Date: Wed, 15 Feb 2017 01:11:32 +0200	[thread overview]
Message-ID: <87fujgqsez.fsf@localhost> (raw)
In-Reply-To: <CAHZoxq-V97M8FbQZeWqL-khEu=iY5oHrV2UTDwqAtPnvsso3SQ@mail.gmail.com> (Eric Hanchrow's message of "Tue, 14 Feb 2017 00:32:22 +0000")

> Hm, I wasn't aware that M-% interprets the prefix arg to mean "word
> replace".  My instinct says it should honor the explicit C-u.

Even in your example, wouldn't it be confusing if after typing

C-a M-% RET !

and seeing this non-symbol prompt

Query replace (default i → u):

replacement will still be symbol-based
(because the previous replacement was symbol-based)?

To be not confusing the prompt should show explicitly
the replacement type, e.g. in case of symbol replacement:

Query replace symbol (default i → u):

When we'll store the replacement type in the history,
then maybe display previous replacements in the minibuffer like

Query replace (default symbol i → u):

then typing M-p will pull a previous replacement into the minibuffer,
e.g. word-based:

Query replace (default symbol i → u): word foo → bar

where “word” is intangible part of the prompt.

>>> I don't know if this is a bug, but it's disappointing and inconvenient.
>>>
>>> Start emacs with -Q, and type into the *scratch* buffer these 10 characters:
>>>
>>>     I ate this
>>>
>>> Now do C-a to move point to the beginning of the line.
>>>
>>> Now replace the symbol "i" with "u":
>>>
>>>    M-s _ i M-% u RET !
>>>
>>> So far, so good: we are looking at
>>>
>>>    U at this
>>>
>>> which is correct.
>>>
>>> Now try to repeat the replacement:
>>>
>>>    C-a M-% RET !
>>>
>>> This changes the "i" in "this" to a u, even though that "i" isn't an
>>> independent symbol.  I was hoping that it would do nothing.
>>
>> But what if you mistakenly invoked the replacement in wrong mode,
>> and want to repeat the same replacement in the right one?  E.g.
>> first entered replacement strings in regexp replacement mode:
>>
>> C-M-% i RET u RET
>>
>> and then realized you want apply the same replacement strings
>> in word mode:
>>
>> C-u M-% RET
>>
>> Should it perform word replacement as explicitly stated
>> by the prefix arg C-u, or use a previous replacement type
>> (in this case, regexp replacement) remembered in the
>> replacement history?





      reply	other threads:[~2017-02-14 23:11 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-31 17:56 bug#25591: 25.1; M-% offers to repeat last search, but forgets that it was a "symbol" search Eric Hanchrow
2017-02-01  0:23 ` Juri Linkov
2017-02-14  0:00 ` Juri Linkov
2017-02-14  0:32   ` Eric Hanchrow
2017-02-14 23:11     ` Juri Linkov [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87fujgqsez.fsf@localhost \
    --to=juri@linkov.net \
    --cc=25591@debbugs.gnu.org \
    --cc=eric.hanchrow@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.