| .. | ||
| features.md | ||
| README.md | ||
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
The automatic installation is expected to just work for common cases, if it doesn't, report bugs!
If you have an usual setup (for example, code is not in the PATH), you
should adapt these manual installation instructions:
$ git clone https://github.com/rust-analyzer/rust-analyzer.git --depth 1
$ cd rust-analyzer
$ cargo install --path ./crates/ra_lsp_server/ --force
$ cd ./editors/code
$ npm install
$ ./node_modules/vsce/out/vsce package
$ code --install-extension ./ra-lsp-0.0.1.vsix
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 highlightingrust-analyzer.showWorkspaceLoadedNotification: to ease troubleshooting, a notification is shown by default when a workspace is loadedrust-analyzer.enableEnhancedTyping: by default, rust-analyzer interceptsEnterkey to make it easier to continue commentsrust-analyzer.raLspServerPath: path tora_lsp_serverexecutablerust-analyzer.enableCargoWatchOnStartup: prompt to install & enablecargo watchfor live error highlighting (note, this does not use rust-analyzer)rust-analyzer.cargo-watch.check-arguments: cargo-watch check arguments. (e.g:--features="shumway,pdf"will run ascargo watch -x "check --features="shumway,pdf"")rust-analyzer.trace.server: enables internal loggingrust-analyzer.trace.cargo-watch: enables cargo-watch 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
lspin a rust buffer - (Optionally) bind commands like
rust-analyzer-join-linesorrust-analyzer-extend-selectionto keys
Sublime Text 3
Prequisites:
LSP package.
Installation:
- Invoke the command palette with Ctrl+Shift+P
- Type
LSP Settingsto open the LSP preferences editor - Add the following LSP client definition to your settings:
"rust-analyzer": {
"command": ["rustup", "run", "stable", "ra_lsp_server"],
"languageId": "rust",
"scopes": ["source.rust"],
"syntaxes": [
"Packages/Rust/Rust.sublime-syntax",
"Packages/Rust Enhanced/RustEnhanced.sublime-syntax"
]
}
- You can now invoke the command palette and type LSP enable to locally/globally enable the rust-analyzer LSP (type LSP enable, then choose either locally or globally, then select rust-analyzer)