Subject: bug#30171: 27.0.50; {add-to,remove-from}-invisibility-spec don't treat t specially

From: Stefan Monnier <[email-masked]>
Date: Wed, 18 Apr 2018 08:35:53 -0400

> The change below is the cause of this odd feature set, and I wonder
> whether Stefan (who made the change) meant for it to do what it does.

The commit message refers to bug#20468 where the discussion indicates
that it seems to be on purpose.

One way to look at it is that the patch made

    (remove-from-invisibility-spec FOO)

give the same result as

    (add-to-invisibility-spec FOO)
    (remove-from-invisibility-spec FOO)

I guess the fundamental problem here is that the special behavior for
the value `t` of buffer-invisibility-spec is just not reflected in
(add-to|remove-from)-invisibility-spec.

So if you rely on the current value being `t` and someone comes along
and just does (add-to-invisibility-spec (make-symbol "unused")),
suddenly your invisible stuff becomes visible.

IOW you just can't rely on the special `t` behavior: if you want your
thing to be invisible, you need to either use the special `t` value of
the `invisible` property (which is invisible regardless of
buffer-invisibility-spec), or you need to add your value via
add-to-invisibility-spec.

        Stefan