Subject: Re: bug#30204: 27.0.50; Changing major mode resets non-default invisibility spec

From: <[email-masked]>
Date: Mon, 06 Sep 2021 12:22:17 +0200

Lars Ingebrigtsen <[email-masked]> writes:

> Philipp <[email-masked]> writes:
>
>>> And I think this is correct behaviour -- if you've switched to
>>> fundamental-mode, then you don't want these remnants from markdown-mode
>>> to survive, I think?
>>
>> Yes, but they do survive, i.e. once markdown-mode has made some text
>> conditionally-visible (which it does for URLs etc.), I'd expect it to
>> become unconditionally-visible instead of unconditionally-invisible
>> when changing the major mode.
>
> That's true.  Hm...  Should major modes remove `invisible' text
> properties (where the value isn't t)?  No, that wouldn't be right,
> either.
>
> Uhm.  OK, if `buffer-invisibility-spec' isn't t,
> `kill-all-local-variables' could remove the `invisible' text property
> from all text that has a non-t value?
>
> That sounds like it would potentially be expensive, but a non-nil
> invisibility spec is quite unusual (and switching major modes, in
> general, is unusual (well, switching from anything but fundamental-mode
> is unusual)).
>
> I dunno.  Anybody have an opinion here?

markdown-mode should simply add `invisible' to
font-lock-extra-managed-props. Font-lock will then automatically remove
this property as well from the buffer in change-major-mode-hook.

>
> -- 
> (domestic pets only, the antidote for overdose, milk.)
>    bloggy blog: http://lars.ingebrigtsen.no