Subject: bug#10899: 24.0.93; c-forward-conditional should not move the mark

From: Lars Ingebrigtsen <[email-masked]>
Date: Tue, 25 Aug 2020 14:34:31 +0200

Alan, I don't know if you saw this bug report?  The gist of it is that
is seems inconsistent for `c-forward-conditional' and
`c-backward-conditional' to do a `push-mark'.

Stefan Monnier <[email-masked]> writes:

>> a. `c-forward-conditional' and `c-backward-conditional' should not set
>> the mark, because each one has an inverse movement command.
>> b. Even if you disagree, those commands should not set the mark when
>> it is active.
>
> FWIW I completely agree.

Juri Linkov <[email-masked]> writes:

>> Regarding your patch, I think it clearly improve the current behavior,
>> but I want to emphasize again that, IMO, setting the mark in too many
>> commands is bad, because it overfills the mark ring, thus making
>> harder to return to earlier positions.
>
> What I wanted to achieve is to make C movement commands to behave exactly
> as their Lisp counterparts.  I see the following correspondence:
>
>                                               leaves mark behind?
> c-beginning-of-defun     beginning-of-defun   yes
> c-end-of-defun           end-of-defun         yes
> c-mark-function          mark-defun           yes
> c-up-conditional         backward-up-list     no
> c-down-conditional       down-list            no
> c-backward-conditional   backward-list        no
> c-forward-conditional    forward-list         no
>
> So I agree that `c-forward-conditional' and `c-backward-conditional'
> should not push the mark.
>
> Regarding bug#10906, I think `c-mark-function' should be rewritten
> to follow the logic of `mark-defun'.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no