Subject: bug#68710: 30.0.50; eglot not sending the correct configuration to LSP

From: "Pedro A. Aranda" <[email-masked]>
Date: Thu, 25 Jan 2024 08:20:13 +0100

I'm using eglot for LaTeX and Python3 in a project
where I need both. My .dir-locals.el file in this case is
((nil
   . ((eglot-workspace-configuration
       . (:pylsp (:plugins (:jedi_completion (:include_params t
:fuzzy t)
                                             :pylint (:enabled 
:json-false)))
                 :texlab (:completion (:matcher "prefix")))
       ))
   ))

which is directly taken from the manual.

Apparently, eglot doesn't send the right configuration to the LSP.

In the case of the LaTeX LSP, it issending:

DEBUG - Opening document file:///home/paag/tmp/horst/mix.tex...
DEBUG - < 
{"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{"pylsp":{"plugins":{"jedi_completion":{"include_params":true,"fuzzy":true},"pylint":{"enabled":false}}},"texlab":{"completion":{"matcher":"prefix"}}}}}
DEBUG - sending message Notification(
     Notification {
         method: "workspace/didChangeConfiguration",
         params: Object {
             "settings": Object {
                 "pylsp": Object {
                     "plugins": Object {
                         "jedi_completion": Object {
                             "fuzzy": Bool(true),
                             "include_params": Bool(true),
                         },
                         "pylint": Object {
                             "enabled": Bool(false),
                         },
                     },
                 },
                 "texlab": Object {
                     "completion": Object {
                         "matcher": String("prefix"),
                     },
                 },
             },
         },
     },
)

While it should only be sending the 'texlab' section as:

{"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{"completion":{"matcher":"prefix"}}}}

In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
  3.24.33, cairo version 1.16.0) of 2024-01-21 built on 99ffe3f54036
Repository revision: 0a07603ae8db41f69e83b1bfec6e28a92f737852
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12201001
System Description: Ubuntu 22.04.3 LTS

Configured using:
  'configure --prefix=/usr --program-suffix=30 --with-x
  --with-x-toolkit=gtk3 --with-cairo --with-compress-install
  --with-modules=yes --with-threads --with-included-regex --with-zlib
  --with-json --with-rsvg --with-small-ja-dic --with-native-compilation
  --with-tree-sitter=no 'CFLAGS=-g -O2
  -ffile-prefix-map=/home/paag/emacs=. -flto=auto -ffat-lto-objects
  -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat
  -Werror=format-security' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2'
  'LDFLAGS=-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects
  -flto=auto -Wl,-z,relro''

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG
SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XINPUT2 XPM
GTK3 ZLIB

Important settings:
   value of $LC_MONETARY: es_ES.UTF-8
   value of $LC_NUMERIC: es_ES.UTF-8
   value of $LC_TIME: es_ES.UTF-8
   value of $LANG: en_US.UTF-8
   value of $XMODIFIERS: @im=ibus
   locale-coding-system: utf-8

Major mode: LaTeX

Minor modes in effect:
   display-line-numbers-mode: t
   yas-global-mode: t
   yas-minor-mode: t
   global-company-mode: t
   company-mode: t
   jinx-mode: t
   global-tab-line-mode: t
   tab-line-mode: t
   electric-pair-mode: t
   server-mode: t
   override-global-mode: t
   global-eldoc-mode: t
   show-paren-mode: t
   electric-indent-mode: t
   mouse-wheel-mode: t
   menu-bar-mode: t
   file-name-shadow-mode: t
   global-font-lock-mode: t
   font-lock-mode: t
   blink-cursor-mode: t
   minibuffer-regexp-mode: t
   column-number-mode: t
   line-number-mode: t
   auto-fill-function: #[128 \304\300\301#\207 [yas--auto-fill 
do-auto-fill :around nil apply] 5 advice]
   visual-line-mode: t
   transient-mark-mode: t
   auto-composition-mode: t
   auto-encryption-mode: t
   auto-compression-mode: t

Load-path shadows:
~/.emacs.d/lisp/rst hides /usr/share/emacs/30.0.50/lisp/textmodes/rst
/usr/share/emacs/site-lisp/latex-cjk-thai/thai-word hides 
/usr/share/emacs/30.0.50/lisp/language/thai-word

Features:
(shadow sort mail-extr emacsbug message yank-media puny dired
dired-loaddefs rfc822 mml mml-sec epa epg rfc6068 epg-config gnus-util
mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils
mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr
mail-utils skeleton move-text misearch multi-isearch multiple-cursors
mc-separate-operations rectangular-region-mode mc-mark-pop mc-edit-lines
mc-hide-unmatched-lines-mode mc-mark-more mc-cycle-cursors
multiple-cursors-core rect display-line-numbers latexenc yasnippet
company-keywords company-files company-yasnippet company-capf
company-latex-aux company norte-theme cycle-appearance color oc-biblatex
ob-shell ob-gnuplot ob-python python treesit org ob ob-tangle ob-ref
ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete
org-list org-footnote org-faces org-entities noutline outline
org-version ob-emacs-lisp ob-core ob-eval org-cycle org-table ol
org-fold org-fold-core org-keys oc org-loaddefs advice find-func
cal-menu calendar cal-loaddefs org-compat org-macs tex-mode jinx
tab-line group-tab-line-mode dbus xml synctex-dbus track-change derived
texlog-mode tramp-interactive tramp trampver tramp-integration files-x
tramp-message tramp-compat xdg shell pcomplete parse-time iso8601
time-date format-spec tramp-loaddefs flymake-yamllint flymake project
compile text-property-search comint ansi-osc ansi-color thingatpt
indent-tools yafolding s hydra ring lv indent-tools-indentation-of
edmacro kmacro compat finder-inf pcase elec-pair hl-line server
benchmark use-package use-package-ensure use-package-delight
use-package-diminish use-package-bind-key bind-key easy-mmode
use-package-core clojure-mode-autoloads company-autoloads
exec-path-from-shell-autoloads flymake-yamllint-autoloads
indent-tools-autoloads hydra-autoloads jinx-autoloads info
compat-autoloads lv-autoloads move-text-autoloads
multiple-cursors-autoloads s-autoloads visual-regexp-autoloads
yafolding-autoloads yaml-mode-autoloads yasnippet-autoloads package
browse-url url url-proxy url-privacy url-expand url-methods url-history
url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers
url-parse auth-source eieio eieio-core cl-macs password-cache json map
byte-opt url-vars cus-edit pp cus-load wid-edit comp cl-seq comp-cstr
cl-extra help-mode warnings icons subr-x gv cl-loaddefs cl-lib comp-run
bytecomp byte-compile comp-common rx rmc iso-transl tooltip cconv eldoc
paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode
mwheel term/x-win x-win term/common-win x-dnd touch-screen tool-bar dnd
fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify
dynamic-setting system-font-setting font-render-setting cairo gtk
x-toolkit xinput2 x multi-tty move-toolbar make-network-process
native-compile emacs)

Memory information:
((conses 16 594406 87447) (symbols 48 29443 15)
  (strings 32 176045 7196) (string-bytes 1 4586758) (vectors 16 52055)
  (vector-slots 8 1317373 178084) (floats 8 239 774)
  (intervals 56 2196 0) (buffers 976 17))