Next: Shutting Down LSP Servers, Previous: Setting Up LSP Servers, Up: Eglot and LSP Servers [Contents][Index]
The most common way to start Eglot is to simply visit a source file of a
given language and use the command M-x eglot. This starts the
language server suitable for the visited file’s major-mode, and attempts
to connect to it. If the connection to the language server is
successful, you will see the [eglot:project] indicator on
the mode line which reflects the server that was started. If the server
program couldn’t be started or connection to it failed, you will see an
error message; in that case, try to troubleshoot the problem as
described in Troubleshooting Eglot. Once a language server was
successfully started and Eglot connected to it, you can immediately
start using the Emacs features supported by Eglot, as described in
Eglot Features.
A single Eglot session for a certain major-mode usually serves all the buffers under that mode which visit files from the same project, so you don’t need to invoke M-x eglot again when you visit another file from the same project which is edited using the same major-mode. This is because Eglot uses the Emacs project infrastructure, as described in Buffers, Projects, and Eglot, and this knows about files that belong to the same project. Thus, after starting an Eglot session for some buffer, that session is automatically reused when visiting files in the same project with the same major-mode.
Alternatively, you could configure Eglot to start automatically for one
or more major-modes from the respective mode hooks. Here’s an example
for a hypothetical foo-mode:
(add-hook 'foo-mode-hook 'eglot-ensure)
The function eglot-ensure will start an Eglot session for each
buffer in which foo-mode is turned on, if there isn’t already an
Eglot session that handles the buffer. Note that this variant of
starting an Eglot session is non-interactive, so it should be used only
when you are confident that Eglot can be started reliably for any file
which may be visited with the major-mode in question.
Note that it’s often difficult to establish this confidence fully, so it
may be wise to use the interactive command eglot instead. You
only need to invoke it once per project, as all other files visited
within the same project will automatically be managed with no further
user intervention needed.
When Eglot connects to a language server for the first time in an Emacs
session, it runs the hook eglot-connect-hook (see Other Variables).
Next: Shutting Down LSP Servers, Previous: Setting Up LSP Servers, Up: Eglot and LSP Servers [Contents][Index]