Rust language support for Atom-IDE, powered by the Rust Language Server (RLS).
- Auto-completion
- Diagnostics (errors and warnings from
rustc
,clippy
support is pending on rls#149) - Document outline
- Go to definition (
ctrl
orcmd
click) - Type information and Documentation on hover (hold
ctrl
orcmd
for more information) - Find references (
ctrl-alt-shift-f
orcmd-opt-shift-f
also in context menu) - Format file with rustfmt (
ctrl-shift-c
orcmd-shift-c
also in context menu) - Format on save (disabled by default, see
atom-ide-ui
settings) - Rls toolchain selection in package settings
- Rls toolchain update checking at startup & every 6 hours thereafter
- Global Rls configuration for
all_targets
- Per-project Rls configuration using
rls.toml
file at project root, see rls#configuration# rls.toml features = ["serde"]
- Graceful handling of Rls being missing from the distribution (which is/was somewhat common on the nightly channel)
- Warns before installing a rust version without Rls or when using an already installed one
- Automatic detection of, and prompt to install, the latest working dated release
You can install from the command line with:
$ apm install ide-rust
Or you can install from Settings view by searching for ide-rust
.
No other packages or manual setup is required as these will be handled with user prompts after install. However, you may wish to install rustup
with your OS package manager instead of following prompts to install via rustup.rs.
ide-rust:restart-all-language-servers
Restart all currently active Rls processes
A root Cargo.toml
is required in each atom project, however cargo workspaces can be used to support multiple crates in a single project.
For example, a project with 'rust_foo' & 'rust_bar' directories/crates could have the following root Cargo.toml
# Cargo.toml
[workspace]
members = [
"rust_foo",
"rust_bar",
]
The Rls command can be specified manually, for example to run from local source code:
# config.cson
...
"ide-rust":
rlsCommandOverride: "cargo +nightly run --manifest-path=/rls-src/Cargo.toml"
When set you'll be able to see, and remove, this from the package settings. After restarting atom an info message will inform you the override is in place.
If stuff isn't working you can try enabling logging to debug:
- Open the atom console (ctrl-shift-i)
- Enter
atom.config.set('core.debugLSP', true)
- Reload atom (ctrl-shift-F5)
This will spit out language server message logging into the atom console. Check if requests/responses are being sent or are incorrect. It will also include any Rls stderr messages (as warnings) which may point to Rls bugs.
MIT License. See the license for more details.