1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-21 06:55:39 +00:00

Eglot: explain how to update Eglot in manual (bug#62720)

* lisp/progmodes/eglot.el (eglot-update): New command.

* doc/misc/eglot.texi (Troubleshooting): Rework.
This commit is contained in:
João Távora 2023-04-27 21:08:17 +01:00
parent 941ef044f2
commit 44ebd9cbd5
2 changed files with 42 additions and 3 deletions

View File

@ -1265,7 +1265,7 @@ is serialized by Eglot to the following JSON text:
@chapter Troubleshooting Eglot
@cindex troubleshooting Eglot
This section documents commands and variables that can be used to
This chapter documents commands and variables that can be used to
troubleshoot Eglot problems. It also provides guidelines for
reporting Eglot bugs in a way that facilitates their resolution.
@ -1275,6 +1275,8 @@ pop up special buffers that can be used to inspect the communications
between the Eglot and language server. In many cases, this will
indicate the problems or at least provide a hint.
@node Performance
@section Performance
@cindex performance
A common and easy-to-fix cause of performance problems is the length
of the Eglot events buffer because it represent additional work that
@ -1289,6 +1291,30 @@ techniques to improve their performance. Often, this can be tweaked
by changing the server configuration (@pxref{Advanced server
configuration}).
@node Getting the latest version
@section Getting the latest version
@cindex updating Eglot
To install the latest Eglot on an Emacs version that does not bundle
Eglot, use @kbd{M-x package-install}.
Often, a newer Eglot version exists that has fixed a longstanding bug,
has more LSP features, or just better support for a particular
language server. Recent Eglot versions can self-update via the
command @kbd{M-x eglot-update}. This will replace any currently
installed version with the newest one available from the ELPA archives
configured in @code{package-archives}.
You may update though other methods, such as @code{package-install},
@code{use-package}, @code{list-packages} or the newer
@code{package-update}. However, do read the docstrings of these
commands, as some may not work in exactly the same way across Emacs
versions, meaning your configuration may be not portable.
@node Reporting bugs
@section Reporting bugs
@cindex bug reports
If you think you have found a bug, we want to hear about it. Before
reporting a bug, keep in mind that interaction with language servers
represents a large quantity of unknown variables. Therefore, it is
@ -1332,6 +1358,10 @@ public Git repository.
Include versions of the software used. The Emacs version can be
obtained with @kbd{M-x emacs-version}.
We welcome bug reports about all Eglot versions, but it is helpful to
first check if the problem isn't already fixed in the latest version
(@pxref{Getting the latest version}).
It's also essential to include the version of ELPA packages that are
explicitly or implicitly loaded. The optional but popular Company or
Markdown packages are distributed as GNU ELPA packages, not to mention

View File

@ -1966,6 +1966,16 @@ If it is activated, also signal textDocument/didOpen."
(declare (obsolete info "29.1"))
(interactive) (info "(eglot)"))
;;;###autoload
(defun eglot-update (&rest _) "Update Eglot."
(interactive)
(with-no-warnings
(require 'package)
(unless package-archive-contents (package-refresh-contents))
(when-let ((existing (cadr (assoc 'eglot package-alist))))
(package-delete existing t))
(package-install (cadr (assoc 'eglot package-archive-contents)))))
(easy-menu-define eglot-menu nil "Eglot"
`("Eglot"
;; Commands for getting information and customization.
@ -3056,8 +3066,7 @@ for which LSP on-type-formatting should be requested."
(funcall snippet-fn (or insertText label))))
(when (cl-plusp (length additionalTextEdits))
(eglot--apply-text-edits additionalTextEdits)))
(eglot--signal-textDocument/didChange)
(eldoc)))))))))
(eglot--signal-textDocument/didChange)))))))))
(defun eglot--hover-info (contents &optional _range)
(mapconcat #'eglot--format-markup