Subject: bug#51320: 26.1; kill-region does not ignore its first two args if region is active

From: Eli Zaretskii <[email-masked]>
Date: Thu, 21 Oct 2021 19:56:46 +0300

> From: Richard Lawrence <[email-masked]>
> Date: Thu, 21 Oct 2021 14:29:11 +0200
> 
> 
> In a function I'm writing, I tried to call kill-region like this:
> 
> (and (use-region-p) (kill-region nil nil t))
> 
> with its first two arguments being nil, because the docstring says:
> 
> "Supply two arguments, character positions BEG and END indicating the
>  stretch of text to be killed.  If the optional argument REGION is
>  non-nil, the function ignores BEG and END, and kills the current
>  region instead."
> 
> But in fact, if both BEG and END are nil as in my function call,
> kill-region doesn't ignore them but throws an error, since its first two
> lines are:
> 
>   (unless (and beg end)
>     (user-error "The mark is not set now, so there is no region"))
> 
> This was surprising to me, since I expected these values to be ignored.

The error is thrown because there's no region in the buffer where you
invoke this.  The fact that you pass BEG and END nil is not the reason
for the error.