RSCLS
A language server for rust-script.
How it works
Internally, RSCLS spawns an instance of rust-analyzer with no package configuration. Every time RSCLS receives textDocument/didOpen request from the client with rust-script, rust_script or rustscript language id, it changes the language id to rust, run rust-script to obtain the project directory and setup linkedProject for the project.
What doesn't work
- Does NOT work on templated rust-scripts, including those need
mainfunction added.- Current implementation doesn't translate file paths nor positions in a file. Since templated rust-scripts are not valid as rust program, we can't handle them directly.
- Commands may not work properly.
- Currently, minimum supported rust-script version is
0.28.0.
Install
cargo install rscls
You can alternatively clone this repository to your local, maybe modify some code and run
cargo install --path path-to-cloned-dir
to install locally modified version of the code.
Uninstall
cargo uninstall rscls
Example configuration
Here's an example configuration for neovim. I don't use other editor/IDEs, so please figure them out on your own. Pull requests are welcomed!
-- Assumes `autocmd BufEnter *.ers setlocal filetype=rustscript` or similar
-- To support files without extension that has shebang, refer to `:help new-filetype-scripts`
-- in wherever you configure lsp, add 'rscls' to the list of lsps to enable.
vim..
-- in after/lsp/rscls.lua
---@type vim.lsp.Config
return
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed under the terms of both the Apache License, Version 2.0 and the MIT license without any additional terms or conditions.