Subject: RE: bug#7500: 24.0.50; doc string of `current-kill'

From: "Drew Adams" <[email-masked]>
Date: Sat, 27 Nov 2010 11:34:02 -0800

> >  "If N is zero, `interprogram-paste-function' is set, and calling
> 
> The above is parsed as
>    (and "if N is zero"
>         "`interprogram-paste-function' is set"
>         "calling ...")

Thank you!  That's just the kind of succinct statement that makes the meaning
clear and advances the schmilblick.

But if that is the meaning then we also need to document what happens if N is
zero and one of the other conjuncts is false.  Are you sure you don't mean the
following instead?

 When N is zero, if i-p-f is set then calling...

IOW, _IF_ N is zero then (if `i-p-f' is....) else ZZZ.
(We already say what happens when N is not zero (ZZZ).)

> since (and A B C) is usually written in (US) English "A, B, and C".
> How 'bout:
> 
>  "If N is zero and `interprogram-paste-function' is set to a function
>   that returns a string or list of strings, then that string (or
>   list) is added to the front of the kill ring and the string (or
>   first string in the list) is returned as the latest kill."

See above.  If my guess above is correct, then:

 When N is zero, if `i-p-f' is set to...

And since the return value of i-p-a is _supposed_ to be either nil or a
string-or-list-of-strings:

 When N is zero, call the value of `interprogram-paste-function'.
 If that call returns nil, do nothing more and return the
 kill-ring car (??).  Otherwise, prepend the returned string
 (or list of strings) to the kill ring and then return the new
 kill-ring car.

See "??" above.  What does `current-kill' return if `i-p-f' returns nil when
called? the existing kill-ring head? nil?