Subject: bug#46775: 27.1; ERC: Track: Modified channels doc and `erc-track-find-face' fixes

From: "J.P." <[email-masked]>
Date: Wed, 07 Jul 2021 05:30:41 -0700

Olivier Certner <[email-masked]> writes:

> The trick is that `erc-track-minor-mode' may be enabled or disabled 
> independently of the whole module. In particular, it may not be activated at 
> all if the (global) keybindings it wants to install, which don't abide by the 
> rules for minor modes maps, are already bound at the time of module's 
> activation.

Right, thanks for patiently explaining an RTFM-worthy question. So like
the doc string says: "for the sole purpose of providing the C-c C-SPC
and C-c C-@ keybindings" (basically for toggling during sessions). I
guess I was dazed into a stupor by encountering two global minor modes
for the same module with only the word "-minor" to distinguish them.

Anyway, it's obviously decades too late to reconsider modules doubling
as minor modes. But perhaps it's still worth reexamining
`erc-update-modules' at some point. As a quick aside:

Currently, we rely on a module's options for conveying per-connection
specifics, when supported. Some options, like `erc-enable-logging', are
buffer local but require extra attention to exploit on a per-connection
basis. And while the macro `erc-define-module' does have a `local-p'
param, I don't think it's actually being used anywhere. This is probably
in part due to `erc-update-modules' only ever enabling (and never
disabling) modules and also running just a hair too early, i.e., right
before a new ERC buffer is made current.

Perhaps a discussion dedicated to this topic may be beneficial at some
point.

> `erc-user-is-active' seems in fact to be used for more than one purpose. In 
> particular, it also triggers an update of channels in the mode line. What's 
> exactly the problem with hooking on 001?

The 001 hook only runs in server buffers. And when it does,
`erc-server-connected' is always nil.

> There is a lot of room for improvement in this module. In particular in 
> determining how some user is "active" (none of the current possibilities 
> really suits my needs).

Then hopefully we can (eventually) make it smarter. I get the feeling
this module, when fully realized, might provide an experience
that's actually superior to that offered by dedicated clients.