Home

Awesome

crates.io

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

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 nvim-lspconfig. 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
local lsp_configs = require 'lspconfig.configs'
if not lsp_configs.rlscls then
    lsp_configs.rlscls = {
        default_config = {
            cmd = { 'rscls' },
            filetypes = { 'rustscript' },
            root_dir = function(fname)
                return lspconfig.util.path.dirname(fname)
            end,
        },
        docs = {
            description = [[
https://github.com/MiSawa/rscls

rscls, a language server for rust-script
]],
        }
    }
end
lspconfig.rlscls.setup {
    settings = {
        ['rust-analyzer'] = {
            imports = {
                group = {
                    enable = true,
                },
                granularity = {
                    enforce = true,
                    group = "crate",
                },
            },
            cargo = {
                buildScripts = {
                    enable = true,
                },
            },
            procMacro = {
                enable = true,
            },
        },
    }
}

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.