rust-analyzer/docs/user
Aleksey Kladov ac6749d18c fixes
2019-03-20 15:25:05 +03:00
..
features.md fixes 2019-03-20 15:25:05 +03:00
README.md fixes 2019-03-20 15:25:05 +03:00

The main interface to rust-analyzer is the LSP implementation. To install lsp server, use cargo install-lsp, which is a shorthand for cargo install --package ra_lsp_server. The binary is named ra_lsp_server, you should be able to use it with any LSP-compatible editor. We use custom extensions to LSP, so special client-side support is required to take full advantage of rust-analyzer. This repository contains support code for VS Code and Emacs.

Rust Analyzer needs sources of rust standard library to work, so you might need to execute

$ rustup component add rust-src

See ./features.md document for a list of features that are available.

VS Code

Prerequisites:

In order to build the VS Code plugin, you need to have node.js and npm with a minimum version of 10 installed. Please refer to node.js and npm documentation for installation instructions.

You will also need the most recent version of VS Code: we don't try to maintain compatibility with older versions yet.

The experimental VS Code plugin can then be built and installed by executing the following commands:

$ git clone https://github.com/rust-analyzer/rust-analyzer.git --depth 1
$ cd rust-analyzer
$ cargo install-code

This will run cargo install --package ra_lsp_server to install the server binary into ~/.cargo/bin, and then will build and install plugin from editors/code. See this for details. The installation is expected to just work, if it doesn't, report bugs!

It's better to remove existing Rust plugins to avoid interference.

Beyond basic LSP features, there are some extension commands which you can invoke via Ctrl+Shift+P or bind to a shortcut. See ./features.md for details.

Settings

  • rust-analyzer.highlightingOn: enables experimental syntax highlighting
  • rust-analyzer.showWorkspaceLoadedNotification: to ease troubleshooting, a notification is shown by default when a workspace is loaded
  • rust-analyzer.enableEnhancedTyping: by default, rust-analyzer intercepts Enter key to make it easier to continue comments
  • rust-analyzer.raLspServerPath: path to ra_lsp_server executable
  • rust-analyzer.enableCargoWatchOnStartup: prompt to install & enable cargo watch for live error highlighting (note, this does not use rust-analyzer)
  • rust-analyzer.trace.server: enables internal logging

Emacs

Prerequisites:

emacs-lsp, dash and ht packages.

Installation:

  • add ra-emacs-lsp.el to load path and require it in init.el
  • run lsp in a rust buffer
  • (Optionally) bind commands like rust-analyzer-join-lines or rust-analyzer-extend-selection to keys