Subject: bug#60399: 30.0.50; Usage of `isearch-open-invisible-temporary' is not documented

From: Ihor Radchenko <[email-masked]>
Date: Tue, 03 Jan 2023 09:02:14 +0000

Stefan Monnier <[email-masked]> writes:

> But it's very natural that the caller of that
> `isearch-open-invisible-temporary` may still want to know the boundaries
> of this overlay after its content is made visible, so as to know when to
> make it invisible again.

I am not sure why isearch should decide this instead of letting
`isearch-open-invisible-temporary' decide what to close.

> The caller could store that information on its own (with a pair of
> markers or another overlay), but it's very natural for the caller to
> just use that overlay.

I'd say easy, not natural. The callee may want to do something with
_all_ the overlays it originally opened, not just the overlays it
originally opened, which _are also intersecting some unspecified
boundary_.

>> I am not even sure how to achieve the desired custom behavior using the
>> current isearch implementation.
>
> `reveal-toggle-invisible` works basically the same way as
> `isearch-open-invisible-temporary` and in
> `outline-reveal-toggle-invisible` I had the same problem as you do,
> which I solved with:
>
>       (let ((o1 (copy-overlay o)))
>         (overlay-put o 'invisible nil)  ;Show (most of) the text.

This is a nice trick, which is unfortunately not very useful in my
situation. Some text should still remain invisible in Org even when
opening is requested. Your code reveals everything unconditionally.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>