Subject: bug#40375: 27.0.50; yank unexpectedly depends on progn

From: Drew Adams <[email-masked]>
Date: Mon, 13 Apr 2020 15:44:53 -0700 (PDT)

> Does this look okay?  (modulo a fill-paragraph which I've held off on
> just to make the patch easier to read)
> 
> --- i/lisp/simple.el
> +++ w/lisp/simple.el
> @@ -5110,7 +5110,9 @@ yank-pop
>  (defun yank (&optional arg)
>    "Reinsert (\"paste\") the last stretch of killed text.
>  More precisely, reinsert the most recent kill, which is the
> -stretch of killed text most recently killed OR yanked.  Put point
> +stretch of text most recently killed or yanked.  Or text from the
> +system clipboard if that was modified more recently (see
> +`interprogram-paste-function').  Put point
>  at the end, and set mark at the beginning without activating it.
>  With just \\[universal-argument] as argument, put point at beginning,
> and mark at end.
>  With argument N, reinsert the Nth most recent kill.

Sorry for butting in here; just happened to see this in passing.

Till now, it was OK to talk only about killing or yanking, as the source of the text to be yanked ("the most recent kill").

But there's also copying text to the kill ring, as if it were killed.  And putting text on the kill ring is analogous to putting it onto the system clipboard.  In both cases you can get it to that saved-text place by killing/cutting OR by copying.

So to be parallel in the doc maybe we should say "text from the kill-ring or from the system clipboard if..."

Users should have a good sense that the same kind of thing is involved: text gets put on some save location (kill ring or clipboard), and then it gets yanked from there.  With your text above, it seems like only killing and yanking is used for the kill ring, but killing or copying is used for the clipboard.

(If what I'm saying isn't clear to you, ignore it.  It's not a big deal.)