From 30f77f03b415fd4a5d711904e476d364b536afb7 Mon Sep 17 00:00:00 2001 From: Heinz Fridolin Date: Sun, 12 Oct 2025 15:02:20 +0200 Subject: [PATCH] Fix updating eglot-sever-programs when multiple java-related assocs exist --- eglot-java.el | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/eglot-java.el b/eglot-java.el index e716944..87a69f4 100644 --- a/eglot-java.el +++ b/eglot-java.el @@ -1413,22 +1413,15 @@ DESTINATION-DIR is the directory where the LSP server will be installed." (setq eglot-java-jdt-uri-handling-patch-applied t)) (unless eglot-java-eglot-server-programs-manual-updates ;; there are multiple allowed syntaxes for mode associations - (let ((existing-java-related-assocs (mapcan (lambda (item) - (if (listp (car item)) - (when (member 'java-mode (car item)) - (car item)) - (when (eq 'java-mode (car item)) - (cons (car item) nil)))) + (let ((first-java-related-assoc (cl-find-if (lambda (item) + (let ((modes (car item))) + (or (eq modes 'java-mode) + (and (listp modes) + (memq 'java-mode modes))))) eglot-server-programs))) - (if existing-java-related-assocs - (let ((eff-existing-java-related-assocs (if (= 1 (length existing-java-related-assocs)) - (if (assq existing-java-related-assocs eglot-server-programs) - existing-java-related-assocs - (car existing-java-related-assocs)) - existing-java-related-assocs))) - (unless (eq 'eglot-java--eclipse-contact (assq eff-existing-java-related-assocs eglot-server-programs)) - (setcdr (assoc eff-existing-java-related-assocs eglot-server-programs) 'eglot-java--eclipse-contact))) - (add-to-list eglot-server-programs 'java-mode 'eglot-java--eclipse-contact)))) + (if first-java-related-assoc + (setcdr first-java-related-assoc 'eglot-java--eclipse-contact) + (add-to-list eglot-server-programs '((java-mode java-ts-mode) eglot-java--eclipse-contact))))) (unless (member 'eglot-java--project-try project-find-functions) (add-to-list 'project-find-functions 'eglot-java--project-try t)))))