Subject: Re: bug#60784: 29.0.60; ERC 5.5: Don't interfere with non-module minor modes in erc-open

From: "J.P." <[email-masked]>
Date: Tue, 17 Jan 2023 06:33:53 -0800

"J.P." <[email-masked]> writes:

> ERC currently takes ownership of any minor mode it encounters whose name
> happens to be prefixed with "erc-" as long as its mode variable is set
> locally in an ERC buffer. That is, it propagates the enabled/disabled
> state to new `erc-mode' buffers, possibly by calling the namesake
> minor-mode function. This makes sense for modes defined by "local"
> modules, whether built-in or third-party. But other, non-module minor
> modes that just happen to use the same top-level library namespace
> should be left alone.

I've addressed this in a slightly more reliable way that doesn't depend
on heuristics. Instead of banking on the unlikelihood of a non-module
minor mode also defining a function suffixed with "-enable," I've opted
for tagging a module's minor-mode symbol with the property `erc-module',
to be paired with its canonical symbol as a value.

It happens that while addressing this, I stumbled upon another, closely
related (and arguably more important) bug stemming from the "local
modules" change set (bug#57955), which was installed last November to
support the SASL module. Basically, a local module's activation state
(i.e., that of its minor-mode variable) wouldn't survive reconnections,
as vociferously claimed. My oversight here owes its inception, in part,
to the SASL module's lack of interest in target buffers, which its test
cases came to reflect. And while the (vital) matter of reinstating a
local module's associated data falls beyond the scope of this change, it
ranks highly among the improvements I'd like to see in ERC's next major
release.

Thanks (and closing).