4个版本

0.2.2 2023年10月21日
0.2.1 2023年6月22日
0.2.0 2023年6月12日
0.1.0 2023年4月9日

文本编辑器中排名85

MIT/Apache

35KB
768

crates.io

RSCLS

rust-script的语言服务器

工作原理

内部,RSCLS以无包配置启动一个rust-analyzer实例。每次RSCLS从客户端收到带有textDocument/didOpen请求时,且请求的语言ID为rust-scriptrust_scriptrustscript,它将语言ID更改为rust,运行rust-script以获取项目目录并设置项目的linkedProject

不工作的情况

  • 不支持模板化的rust-scripts,包括那些需要添加main函数的。
    • 当前实现不转换文件路径和文件中的位置。由于模板化的rust-scripts作为rust程序无效,我们无法直接处理它们。
  • 命令可能无法正确工作。
  • 目前,最低支持的rust-script版本是0.28.0

安装

cargo install rscls

您还可以将此仓库克隆到本地,也许修改一些代码并运行

cargo install --path path-to-cloned-dir

以安装本地修改后的代码版本。

卸载

cargo uninstall rscls

示例配置

以下是为nvim-lspconfig的示例配置。我不使用其他编辑器/IDE,所以请自行解决。欢迎提交拉取请求!

-- 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,
            },
        },
    }
}

贡献

除非您明确说明,否则您提交的任何贡献,根据Apache-2.0许可证的定义,将根据Apache许可证版本2.0和MIT许可证的条款双许可,没有任何附加条款或条件。

依赖项

~8–20MB
~272K SLoC