Subject: bug#14724: 24.3.50; `isearch-open-necessary-overlays' handling of overlay property 'isearch-open-invisible'

From: Drew Adams <[email-masked]>
Date: Wed, 26 Jun 2013 09:24:53 -0700 (PDT)

The code would be more robust if it would gracefully handle (1) an
non-functional value and perhaps also (2) a functional value where
invoking the function raises an error.  Here is the problematic code:

(funcall (overlay-get ov 'isearch-open-invisible)  ov)

For (1), the code could be like this:

(when (functionp (overlay-get ov 'isearch-open-invisible))
  (funcall (overlay-get ov 'isearch-open-invisible) ov))

For (1+2), that could be wrapped in `ignore-errors'.  Dunno whether (2)
is an important case to handle or whether it is really advisable to
ignore such an error.

Handling (1) seems to me reasonable, and with no downside.  The behavior
is to just do nothing additional with the overlay - e.g., leave the text
invisible.

Dunno know whether similar considerations apply to
`isearch-open-invisible-temporary'.  I'm guessing no - its value seems
to be provided only by the Isearch code (whereas code far from Isearch
sets the `isearch-open-invisible' overlay property).

In GNU Emacs 24.3.50.1 (i686-pc-mingw32)
 of 2013-06-20 on ODIEONE
Bzr revision: 113100 [email-masked]
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
 `configure --prefix=/c/Devel/emacs/binary --enable-checking=yes,glyphs
 CFLAGS=-O0 -g3 LDFLAGS=-Lc:/Devel/emacs/lib
 CPPFLAGS=-Ic:/Devel/emacs/include'