Subject: Re: bug#65347: 29.1; Underscore in query replace prevents case-matching

From: Eli Zaretskii <[email-masked]>
Date: Fri, 18 Aug 2023 22:06:32 +0300

> From: Spencer Baugh <[email-masked]>
> Cc: [email-masked],  [email-masked]
> Date: Fri, 18 Aug 2023 14:31:46 -0400
> 
> > Here, you look at the issue from a very narrow perspective: of words
> > separated by '-' or '_', because that just happens to be the case that
> > you bumped into.  But that is just one very particular use case; words
> > can be separated by a lot more characters.  I would actually begin
> > considering the simpler case of "Foo do action".
> 
> But no, this use case very specifically is about replacing symbols
> (sexps) while matching case.

What are "symbols" in this context?

> I don't much care about the word boundary or superword-mode, because I'm
> not dealing with words - I'm very deliberately dealing with symbols.

Capitalization issues with program code are conceptually different
from those with human-readable text.  You are basically talking about
refactoring, not about text replacement.  So the use cases that are of
interest to you are not well supported by query-replace, because it
doesn't target them.  It could well mean that you will need a custom
replace-match function.  Insisting on replace-match to support these
cases is not necessarily wise, from where I stand.

> What about the other thing I proposed?  That's what I'm more interested
> in, because this is a problem of replacing symbols.  And it's much more
> elegant.  Repeated here:
> 
> >>Alternatively, much more interestingly, the case-matching could *always*
> >>detect case patterns both for symbols and for words.  And if there's no
> >>case pattern for words, but there is a case pattern for symbols, apply
> >>that case pattern to symbols in the replacement.  We could even turn
> >>that on by default.  Does that sound like a good change?  I can make
> >>that change if it sounds desirable.

I don't understand the proposal.  Again, what are "symbols" in this
context, and how are they different from "words"?