Subject: Re: bug#43847: ERC - prevent yanking multiple lines into IRC (feature request) *patch*

From: Corwin Brust <[email-masked]>
Date: Fri, 9 Oct 2020 10:41:26 -0500

Hi Kévin and Lars.  CCd Amin on this one also :)

On Fri, Oct 9, 2020 at 2:54 AM Kévin Le Gouguec
<[email-masked]> wrote:
>
> Lars Ingebrigtsen <[email-masked]> writes:
>
> > Corwin Brust <[email-masked]> writes:
> >
> >> I hate it when I accidentally paste multi-line text into ERC.  I
> >> *never* actually intend to do this.
> >
> > I sometimes want to, and sometimes I don't want to.  I think it would be
> > pretty surprising for users if we rebind `C-y' in this way.
>
> Seconded.  I think a whitespace-fixing yank command could be useful in
> more situations than just ERC; OTOH I'd much rather keep C-y as a
> "reliably dumb" yank in all contexts, at least by default.
>

I mean, diversity, right :)

This hasn't come up for me outside IRC/ERC, that I can recall, but it
definitely does makes sense to me that people would want an easy way
to strip new-lines when yanking in contexts out-side IRC. Any thoughts
as to the approach for this?  The first thing that occurs would be to
have an additional var akin to `yank-handled-properties' and
`yank-excluded-properties', perhaps `yank-unfilled'.  This would
change the behavior of `yank' when bound to a non-nil value.   I guess
we'd want a new function wrapping `yank' with the new var lexically
bound to t.  As for a default binding for this, I note that M-y
doesn't seem to do anything helpful when not proceeded by a C-y.
Maybe more special case logic there?

That said, I opened this bug with the goal of making it realy easy to
avoid accidental muli-line spaces when pasting into ERC.

To double confirm, both of you are saying that it is a frequent
use-case that you want to yank content including new-lines into
erc-mode buffers?

I'd really like to see something like a defcustom that can make the
default behavior of C-y for ERC buffers less IRC surly.   IMHO, making
this default to t is more newbie friendly, while those who have a
use-case for multi-line paste directly into ERC seem more likely to be
those who will know how to set the var.

  (defcustom erc-yank-unfilled t "When non-nill, ERC unfills before
inserting from the kill-ring.")

  (defun erc-yank (..)
    ..
    (let ((yank-unfilled erc-yank-unfilled))
      .. ))

Couple additional notes:

 -  I need to respin this to use [rebind] (thanks to wgreenhouse from #erc)
 -  I haven't written anything for News, which I suspect anything we
would decide on will end-up reaching

Thanks much,
Corwin