Subject: bug#79371: [PATCH] Make yank-in-context also can indent the yanked text.

From: Stefan Monnier <[email-masked]>
Date: Tue, 02 Sep 2025 14:40:30 -0400

>>> This patch makes `yank-in-context` can optionally indent the yanked text.
>> [...]
>>> @@ -6432,8 +6452,12 @@ yank-in-context
>>>  variable to determine how strings should be escaped."
>>>    (interactive "*P")
>>>    (let ((yank-transform-functions (cons #'yank-in-context--transform
>>> -                                        yank-transform-functions)))
>>> -    (yank arg)))
>>> +                                        yank-transform-functions))
>>> +        (beg (point)) end)
>>> +    (yank arg)
>>> +    (setq end (point))
>>> +    (if yank-in-context-indent
>>> +        (funcall yank-in-context-indent-function beg end))))
>>
>> Hmm... what's the intended use case?
>>
>> `yank-in-context` differs from `yank` only inside strings and comments,
>> but in most major modes `indent-region` doesn't know how to indent
>> inside strings and comments because we don't know if it holds plain text
>> or code or whatnot.
>
> This can be fixed not indenting the yanked text if it's in a comment or string.

Ah... so your intended use case is using `yank-in-context` to yank inside code?
I see...

Then why limit it to `yank-in-context`?

[ I see that limiting it to `yank-in-context` means that it's limited to
  a command that already cares about the difference between
  code/comments/strings.  So there's some logic to it.  ]

> Another alternative is to create a hook for yank or that electric-indent
> can also handle this.

It also occurred to me that it could make sense to link it to
electric-indent.

        Stefan