Skip to content

Commit 7ff0113

Browse files
committed
Update emacs documentation, split into Eglot and LSP Mode
Emacs has now two LSP clients, Eglot and LSP-Mode, where Eglot will soon be shipped with Emacs. Now both have rust-analyzer enabled by default and require no further setup then just being installed and enabled. `lsp-rust.el` is not required anymore. In instructions, give a one-liner how to enable each respective mode and for configuration link to exiting documentation to avoid getting deprecated. Resolves Issue #196: #196
1 parent ec3b7ba commit 7ff0113

File tree

1 file changed

+34
-7
lines changed

1 file changed

+34
-7
lines changed

manual.adoc

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -234,16 +234,43 @@ $ brew install rust-analyzer
234234

235235
=== Emacs
236236

237-
Note this excellent https://robert.kra.hn/posts/2021-02-07_rust-with-emacs/[guide] from https://github.com/rksm[@rksm].
238-
239237
Prerequisites: You have installed the <<rust-analyzer-language-server-binary,`rust-analyzer` binary>>.
240238

241-
Emacs support is maintained as part of the https://github.com/emacs-lsp/lsp-mode[Emacs-LSP] package in https://github.com/emacs-lsp/lsp-mode/blob/master/lsp-rust.el[lsp-rust.el].
239+
To use `rust-analyzer`, you need to install and enable one of the two popular two popular LSP client implementations for Emacs, https://github.com/joaotavora/eglot[Eglot] or https://github.com/emacs-lsp/lsp-mode[LSP Mode]. Both enable `rust-analyzer` by default in rust buffers if it is available.
240+
241+
==== Eglot
242+
243+
Eglot is the more minimalistic and lightweight LSP client for Emacs, integrates well with existing Emacs functionality and will be built into Emacs starting from release 29.
244+
245+
After installing Eglot, e.g. via `M-x package-install` (not needed from Emacs29), you can enable it via the `M-x eglot` command or load it automatically in `rust-mode` via
246+
247+
[source,emacs-lisp]
248+
----
249+
(add-hook 'rust-mode-hook 'eglot-ensure)
250+
----
251+
252+
For more detailed instructions and options see the https://joaotavora.github.io/eglot[Eglot manual] (also available from Emacs via `M-x info`) and the
253+
https://github.com/joaotavora/eglot/blob/master/README.md[Eglot readme].
254+
255+
256+
==== LSP Mode
257+
258+
LSP-mode is the original LSP-client for emacs. Compared to Eglot it has a larger codebase and supports more features, like LSP protocol extensions.
259+
With extension packages like https://github.com/emacs-lsp/lsp-mode[LSP UI] it offers a lot of visual eyecandy.
260+
Further it integrates well with https://github.com/emacs-lsp/dap-mode[DAP mode] for support of the Debug Adapter Protocol.
261+
262+
You can install LSP-mode via `M-x package-install` and then run it via the `M-x lsp` command or load it automatically in rust buffers with
263+
264+
[source,emacs-lisp]
265+
----
266+
(add-hook 'rust-mode-hook 'lsp-deferred)
267+
----
268+
269+
For more information on how to set up LSP mode and its extension package see the instructions in the https://emacs-lsp.github.io/lsp-mode/page/installation[LSP mode manual].
270+
Also see the https://emacs-lsp.github.io/lsp-mode/page/lsp-rust-analyzer/[rust-analyzer section] for `rust-analyzer` specific options and commands, which you can optionally bind to keys.
271+
272+
Note the excellent https://robert.kra.hn/posts/2021-02-07_rust-with-emacs/[guide] from https://github.com/rksm[@rksm] on how to set-up Emacs for Rust development with LSP mode and several other packages.
242273

243-
1. Install the most recent version of `emacs-lsp` package by following the https://github.com/emacs-lsp/lsp-mode[Emacs-LSP instructions].
244-
2. Set `lsp-rust-server` to `'rust-analyzer`.
245-
3. Run `lsp` in a Rust buffer.
246-
4. (Optionally) bind commands like `lsp-rust-analyzer-join-lines`, `lsp-extend-selection` and `lsp-rust-analyzer-expand-macro` to keys.
247274

248275
=== Vim/NeoVim
249276

0 commit comments

Comments
 (0)