| # VS Code |
| |
| This is the best supported editor at the moment. The rust-analyzer |
| plugin for VS Code is maintained [in |
| tree](https://github.com/rust-lang/rust-analyzer/tree/master/editors/code). |
| |
| You can install the latest release of the plugin from [the |
| marketplace](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer). |
| |
| Note that the plugin may cause conflicts with the [previous official |
| Rust |
| plugin](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust). |
| The latter is no longer maintained and should be uninstalled. |
| |
| The server binary is stored in the extension install directory, which |
| starts with `rust-lang.rust-analyzer-` and is located under: |
| |
| - Linux: `~/.vscode/extensions` |
| |
| - Linux (Remote, such as WSL): `~/.vscode-server/extensions` |
| |
| - macOS: `~/.vscode/extensions` |
| |
| - Windows: `%USERPROFILE%\.vscode\extensions` |
| |
| As an exception, on NixOS, the extension makes a copy of the server and |
| stores it under |
| `~/.config/Code/User/globalStorage/rust-lang.rust-analyzer`. |
| |
| Note that we only support the two most recent versions of VS Code. |
| |
| ### Updates |
| |
| The extension will be updated automatically as new versions become |
| available. It will ask your permission to download the matching language |
| server version binary if needed. |
| |
| #### Nightly |
| |
| We ship nightly releases for VS Code. To help us out by testing the |
| newest code, you can enable pre-release versions in the Code extension |
| page. |
| |
| ### Manual installation |
| |
| Alternatively, download a VSIX corresponding to your platform from the |
| [releases](https://github.com/rust-lang/rust-analyzer/releases) page. |
| |
| Install the extension with the `Extensions: Install from VSIX` command |
| within VS Code, or from the command line via: |
| |
| $ code --install-extension /path/to/rust-analyzer.vsix |
| |
| If you are running an unsupported platform, you can install |
| `rust-analyzer-no-server.vsix` and compile or obtain a server binary. |
| Copy the server anywhere, then add the path to your settings.json, for |
| example: |
| |
| ```json |
| { "rust-analyzer.server.path": "~/.local/bin/rust-analyzer-linux" } |
| ``` |
| |
| ### Building From Source |
| |
| Both the server and the Code plugin can be installed from source: |
| |
| $ git clone https://github.com/rust-lang/rust-analyzer.git && cd rust-analyzer |
| $ cargo xtask install |
| |
| You’ll need Cargo, nodejs (matching a supported version of VS Code) and |
| npm for this. |
| |
| Note that installing via `xtask install` does not work for VS Code |
| Remote, instead you’ll need to install the `.vsix` manually. |
| |
| If you’re not using Code, you can compile and install only the LSP |
| server: |
| |
| $ cargo xtask install --server |
| |
| Make sure that `.cargo/bin` is in `$PATH` and precedes paths where |
| `rust-analyzer` may also be installed. Specifically, `rustup` includes a |
| proxy called `rust-analyzer`, which can cause problems if you’re |
| planning to use a source build or even a downloaded binary. |
| |
| ## VS Code or VSCodium in Flatpak |
| |
| Setting up `rust-analyzer` with a Flatpak version of Code is not trivial |
| because of the Flatpak sandbox. While the sandbox can be disabled for |
| some directories, `/usr/bin` will always be mounted under |
| `/run/host/usr/bin`. This prevents access to the system’s C compiler, a |
| system-wide installation of Rust, or any other libraries you might want |
| to link to. Some compilers and libraries can be acquired as Flatpak |
| SDKs, such as `org.freedesktop.Sdk.Extension.rust-stable` or |
| `org.freedesktop.Sdk.Extension.llvm15`. |
| |
| If you use a Flatpak SDK for Rust, it must be in your `PATH`: |
| |
| * install the SDK extensions with `flatpak install org.freedesktop.Sdk.Extension.{llvm15,rust-stable}//23.08` |
| * enable SDK extensions in the editor with the environment variable `FLATPAK_ENABLE_SDK_EXT=llvm15,rust-stable` (this can be done using flatseal or `flatpak override`) |
| |
| If you want to use Flatpak in combination with `rustup`, the following |
| steps might help: |
| |
| - both Rust and `rustup` have to be installed using |
| <https://rustup.rs>. Distro packages *will not* work. |
| |
| - you need to launch Code, open a terminal and run `echo $PATH` |
| |
| - using |
| [Flatseal](https://flathub.org/apps/details/com.github.tchx84.Flatseal), |
| you must add an environment variable called `PATH`. Set its value to |
| the output from above, appending `:~/.cargo/bin`, where `~` is the |
| path to your home directory. You must replace `~`, as it won’t be |
| expanded otherwise. |
| |
| - while Flatseal is open, you must enable access to "All user files" |
| |
| A C compiler should already be available via `org.freedesktop.Sdk`. Any |
| other tools or libraries you will need to acquire from Flatpak. |
| |