Subject: Re: bug#16493: 24.3.50; (setq search-invisible t) is useless, let's allow to turn visible-mode temporarily on

From: Stefan Monnier <[email-masked]>
Date: Tue, 30 Apr 2019 08:45:54 -0400

>> You can do
>>
>>     (overlay-put OVERLAY 'invisible 'visible)
>>
>> to get the same result without far-reaching changes to the C code.
>
> Um, no, that gives the opposite effect.
>
> (let ((p (point))
>       overlay)
>   (insert "(" (propertize "invisible" 'invisible t) ")")
>   (setq overlay (make-overlay p (point)))
>   ;; All text, including parens, becomes invisible.
>   (overlay-put overlay 'invisible 'visible))

You need to use `add-to-invisibility-spec` before that works.  E.g.: 

    (add-to-invisibility-spec 'dummy)
    
that's because of a quirk of the way we treat `invisible` and the
`buffer-invisibility-spec`.

        Stefan

PS: To fix this quirk, we should change buffer-invisibility-spec's
default value to nil (or `(t)`, maybe) instead of t.