Subject: bug#39512: 28.0.50; Add command isearch-yank-region

From: Ergus <[email-masked]>
Date: Wed, 12 Aug 2020 19:41:25 +0200

On Wed, Aug 12, 2020 at 02:13:11AM +0300, Juri Linkov wrote:
>> If the region is active but empty that functionality could make sense
>> (extend to the next thing at point), but when it is not empty I think it
>> doesn't make too much sense in general use... but let's wait for the
>> rest of the opinions.
>
>Good point.  ‘C-SPC M-s . C-s C-s ...’ means that the user wants to
>extend the region to one of the next found symbols.
>
>But still there is an unsolved problem: ‘M-s .’ activates the *symbol*
>search mode, not the default non-symbol search mode.  This means that
>the yanked region will match only symbols, that is useless when the
>region is longer than one symbol (the symbol search is activated by
>the call of ‘isearch-forward-symbol’ in ‘isearch-forward-symbol-at-point’).
>
>This means there is still a need to add a new command that yanks the region
>but doesn't activate the symbol search mode.
>
You are right; but...

Does it really makes sense to call isearch-forward-symbol when the
region is active and not empty if it works in the way we are describing?

I mean; we could move the call to isearch-forward-symbol inside the cond
and use just isearch-forward or isearch-forward-regexp directly when the
bounds are from the active region.

  Because for isearch-forward-symbol there is already `M-s _`

>> Actually, probably such a function (thing-at-point-or-region) could be
>> added to thing-at-pt to use it in other functionalities too. (like
>> highlight thing at point, idle highlight thing at point or region, kill
>> thing at point or region and so on)
>>
>> It is something I have seen re-implemented in many packages here and
>> there again and again, so probably it is time to provide it in vanilla.
>
>Yes, this could be added to thing-at-pt.

If so, maybe it will be needed to return somehow the information about
the precedence of the bounds. Anything that can be used in the caller to
know if the bounds are from thing-at-pt or region or if they are a
symbol, a word or a region.

In C we could pass a variable by reference; but in elisp I don't know
whats the convectional way.