Subject: bug#71823: 31.0.50; project-mode-line and eglot duplicate project-name in mode-line

From: João Távora <[email-masked]>
Date: Fri, 05 Jul 2024 13:04:15 +0100

[email-masked] writes:

> To be clear, I want a configuration which will have project-name from
> project-mode-line and no project-name in the eglot mode-line entry.

I understand.

> So that functionality will need to be moved anyway, no matter how we
> solve this problem.

As I see it (now, not 2 weeks ago) only if the user wants the same as
you.  The reason I changed my mind is that I hadn't realized that
section was being used for the server-specific menu.

> Are you fine with including the server menu in the main menu?  This is
> something we'd want in both the "make it work by default" or "make it
> customizable" solutions.

No, I'm not sure of that.  One of the reasons is that Eglot currently
supports only one server, but there are many requests for it to support
more than one in the future.  So I'm not sure that's such a good move,
whereas if the user decides they don't need the server menu, that's a
different story.

> It's better still to both allow the user to choose and *also* have a
> default which works right out of the box.  Those are two separate things
> which we can do separately.

AFAIK the current default is fine.  Nothing is broken.

> But allowing the user to choose adds a bunch of new customization points
> that need to be maintained.

Not a bunch of customization points.  Only one, a very idiomatic one:
eglot-mode-line-format.

> I don't understand why we would add these new customization points
> when we already are low on maintainer time for Eglot. I anticipate
> adding these custosmization points would have lots of small bugs. I'm
> all for doing it eventually, but making things work by default also
> solves my problem, without adding new maintenance burden.

I find this very contradictory, but that's just my opinion.  It's
precisely because we're low on maintainer capacity for Eglot that I
don't want rash changes.  No offense to your idea -- it seemed good and
I approved and encouraged it, but in light of this new info, I've
changed my mind.

Also, Eglot enabling things outside its domain when managing buffers is
indeed a design principle, but it usually applies to things that are
_essential_ to helping Eglot do its job corectly (Flymake, ElDoc, even
certain Company configurations).  Now, I'm not sure showing the user the
current project in the mode-line and giving them access to all those
(undoutably useful) options is one of those "essential things", whereas
telling the user that there is currently at least one live server is.

Furthermore , not everyone likes this idea, as you may expect.

Anyway, if you want a quick hack for your predicament, I think you can
put this in your .emacs:

(add-hook 'eglot-managed-mode-hook
  (lambda ()
     (setf (eglot--project-nickname (eglot-current-server)) "")))

untested...

João