GNU bug report logs -
#9934
24.0.91; `region-active-p' definition
Previous Next
Reported by: "Drew Adams" <drew.adams <at> oracle.com>
Date: Tue, 1 Nov 2011 17:16:02 UTC
Severity: minor
Found in version 24.0.91
Done: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
Bug is archived. No further changes may be made.
Full log
Message #31 received at 9934 <at> debbugs.gnu.org (full text, mbox):
> emacs -Q
> M-x transient-mark-mode
> M-: mark-active RET
> C-SPC
> M-: mark-active RET
You're right about that - my bad. And I do use (and transient-mark-mode
mark-active) in my own code (cross versions).
It is the name `region-active-p' that is a bit misleading. Outside t-m mode the
region is neither active nor inactive. When `region-active-p' returns nil it
does not necessarily mean that the region is inactive. It means that either the
region is inactive or t-m mode is turned off.
(not (region-active-p)) is really `region-active-or-not-t-m-mode'.
Pre-Emacs 23, `deactivate-mark' had no effect outside of t-m mode (as the doc
string said back then, `deactivate-mark' "makes a difference only in Transient
Mark mode"). (That is still the case apart from FORCE, as the current doc
string notes.) Mark activation/deactivation has no meaning outside t-m mode.
(And `mark-active' does not really test whether the mark is active - see below.)
Likewise region activation/deactivation. The two, region/mark active/inactive,
_should_ be synonymous. Whenever one is (in)active the other should be also.
That's unfortunately not necessarily the case, at least according to some
function/var names. The doc should be more careful and clearer, however.
`mark-active' has in fact the same kind of problem as `region-active-p': When
there is _no_ mark it is logically impossible to speak of _the mark_ being
active or inactive.
(not mark-active) is really `mark-inactive-or-nonexistent', where "inactive" is
only possible/meaningful in t-m mode. All that is really possible (i.e., with
any consequence) to test for the mark outside t-m mode is
existence/nonexistence.
`mark-active' was (and is) a sufficient test whenever t-m-mode is on, and it
makes no sense to test `mark-active' when the mode is off - other than as a test
for the _existence_ of the mark (same as (mark t) in that case).
The notion of "active/inactive region" simply makes no sense outside of t-m
mode. You've chosen to consider the region to be always "inactive" outside of
t-m mode, judging by the name `region-active-p'. But if it is _always_ inactive
then there is no such thing as active in that context - there is no
active/inactive state difference.
Active mark and region is really a t-m mode thing.
This bug report was last modified 13 years and 204 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.