From: rvs314 <71688932+rvs314@users.noreply.github.com> Date: Fri, 26 Mar 2021 10:08:03 +0000 (-0400) Subject: Offer better control over "languageid" value sent to lsp X-Git-Tag: emacs-29.0.90~1616^2~524^2~4^2~150 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=602004dbb5286e20fffae9c034b89aab994ad826;p=emacs.git Offer better control over "languageid" value sent to lsp Handles the issue of languages whose major mode has a different name than the name that the LSP server expects for the language. One can now: (put 'favourite-major-mode 'eglot-language-id "foobarbaz") And "foobarbaz" will be used as the LSP "languageId" value. * eglot.el (eglot--TextDocumentItem): Consult 'eglot-language-id. Copyright-paperwork-exempt: yes GitHub-reference: fix https://github.com/joaotavora/eglot/issues/525 --- diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index 5914f2ddd47..03e8baa8b76 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -1741,9 +1741,11 @@ THINGS are either registrations or unregisterations (sic)." (append (eglot--VersionedTextDocumentIdentifier) (list :languageId - (if (string-match "\\(.*\\)-mode" (symbol-name major-mode)) - (match-string 1 (symbol-name major-mode)) - "unknown") + (cond + ((get major-mode 'eglot-language-id)) + ((string-match "\\(.*\\)-mode" (symbol-name major-mode)) + (match-string 1 (symbol-name major-mode))) + (t "unknown")) :text (eglot--widening (buffer-substring-no-properties (point-min) (point-max))))))