Subject: Comments on Eglot manual

From: Augusto Stoffel <[email-masked]>
Date: Sun, 30 Oct 2022 12:05:27 +0100

Find below some comments on the "Customizing Eglot" section of the manual:

> [...] via the variable ‘eglot-workspace-configuration’.  Eglot sends the
> portion of the settings contained in this variable to each server for
> which such settings were defined in the variable.

This is not true.  The entire `eglot-workspace-configuration' is sent to
the server; presumably, severs ignore everything which is not under its
own prefix, but that's just a convention.

> JSON values ‘true’, ‘false’, ‘null’ and ‘{}’ are represented by the
> Lisp values ‘t’, ‘:json-false’, ‘nil’, and ‘eglot-{}’, respectively.

Unless something has been renamed recently, it's `eglot--{}', not
`eglot-{}'.

>    Alternatively, the same configuration could be defined as follows:
> 
>      ((nil
>        . ((eglot-workspace-configuration
>            . (:pylsp (:plugins (:jedi_completion (:include_params t
>                                                   :fuzzy t)
>                                 :pylint (:enabled :json-false)))
>               :gopls (:usePlaceholders t))))))

This is more or less obvious, if you know how dir-local variables work.
So I would suggest mentioning a different configuration method:

Alternatively, you can set a default workspace configuration globally by
adding the following to your init file:

       (setq-default
         eglot-workspace-configuration
         '(:pylsp (:plugins (:jedi_completion (:include_params t
                                               :fuzzy t)
                             :pylint (:enabled :json-false)))
           :gopls (:usePlaceholders t))

>    This is an equivalent setup which sets the value for all the
> major-modes inside the project; Eglot will use for each server only the
> section of the parameters intended for that server.

Again, this is not true.  Rather, each sever will presumably ignore any
settings not under its own "namespace".