aboutsummaryrefslogtreecommitdiffstats
path: root/lua/lspconfig/rust_analyzer.lua
diff options
context:
space:
mode:
authorMichael Lingelbach <m.j.lbach@gmail.com>2021-11-24 23:01:07 -0500
committerMichael Lingelbach <m.j.lbach@gmail.com>2021-11-25 23:46:21 -0500
commit6c2fb86c6a03e20abea5ddd17d735885f0b7cb5e (patch)
tree7f2bf25ca5456b23304295dba8fe0005e85a5c10 /lua/lspconfig/rust_analyzer.lua
parentfix: only set cmd_cwd if filepath exists (#1485) (diff)
downloadnvim-lspconfig-6c2fb86c6a03e20abea5ddd17d735885f0b7cb5e.tar
nvim-lspconfig-6c2fb86c6a03e20abea5ddd17d735885f0b7cb5e.tar.gz
nvim-lspconfig-6c2fb86c6a03e20abea5ddd17d735885f0b7cb5e.tar.bz2
nvim-lspconfig-6c2fb86c6a03e20abea5ddd17d735885f0b7cb5e.tar.lz
nvim-lspconfig-6c2fb86c6a03e20abea5ddd17d735885f0b7cb5e.tar.xz
nvim-lspconfig-6c2fb86c6a03e20abea5ddd17d735885f0b7cb5e.tar.zst
nvim-lspconfig-6c2fb86c6a03e20abea5ddd17d735885f0b7cb5e.zip
feat: expose configs
Diffstat (limited to 'lua/lspconfig/rust_analyzer.lua')
-rw-r--r--lua/lspconfig/rust_analyzer.lua83
1 files changed, 0 insertions, 83 deletions
diff --git a/lua/lspconfig/rust_analyzer.lua b/lua/lspconfig/rust_analyzer.lua
deleted file mode 100644
index 285ba0f3..00000000
--- a/lua/lspconfig/rust_analyzer.lua
+++ /dev/null
@@ -1,83 +0,0 @@
-local configs = require 'lspconfig/configs'
-local util = require 'lspconfig/util'
-
-local function reload_workspace(bufnr)
- bufnr = util.validate_bufnr(bufnr)
- vim.lsp.buf_request(bufnr, 'rust-analyzer/reloadWorkspace', nil, function(err)
- if err then
- error(tostring(err))
- end
- vim.notify 'Cargo workspace reloaded'
- end)
-end
-
-configs.rust_analyzer = {
- default_config = {
- cmd = { 'rust-analyzer' },
- filetypes = { 'rust' },
- root_dir = function(fname)
- local cargo_crate_dir = util.root_pattern 'Cargo.toml'(fname)
- local cmd = { 'cargo', 'metadata', '--no-deps', '--format-version', '1' }
- if cargo_crate_dir ~= nil then
- cmd[#cmd + 1] = '--manifest-path'
- cmd[#cmd + 1] = util.path.join(cargo_crate_dir, 'Cargo.toml')
- end
- local cargo_metadata = ''
- local cargo_metadata_err = ''
- local cm = vim.fn.jobstart(cmd, {
- on_stdout = function(_, d, _)
- cargo_metadata = table.concat(d, '\n')
- end,
- on_stderr = function(_, d, _)
- cargo_metadata_err = table.concat(d, '\n')
- end,
- stdout_buffered = true,
- stderr_buffered = true,
- })
- if cm > 0 then
- cm = vim.fn.jobwait({ cm })[1]
- else
- cm = -1
- end
- local cargo_workspace_dir = nil
- if cm == 0 then
- cargo_workspace_dir = vim.fn.json_decode(cargo_metadata)['workspace_root']
- else
- vim.notify(
- string.format('cmd [%q] failed:\n%s', table.concat(cmd, ' '), cargo_metadata_err),
- vim.log.levels.Warning
- )
- end
- return cargo_workspace_dir
- or cargo_crate_dir
- or util.root_pattern 'rust-project.json'(fname)
- or util.find_git_ancestor(fname)
- end,
- settings = {
- ['rust-analyzer'] = {},
- },
- },
- commands = {
- CargoReload = {
- function()
- reload_workspace(0)
- end,
- description = 'Reload current cargo workspace',
- },
- },
- docs = {
- package_json = 'https://raw.githubusercontent.com/rust-analyzer/rust-analyzer/master/editors/code/package.json',
- description = [[
-https://github.com/rust-analyzer/rust-analyzer
-
-rust-analyzer (aka rls 2.0), a language server for Rust
-
-See [docs](https://github.com/rust-analyzer/rust-analyzer/tree/master/docs/user#settings) for extra settings.
- ]],
- default_config = {
- root_dir = [[root_pattern("Cargo.toml", "rust-project.json")]],
- },
- },
-}
-
-configs.rust_analyzer.reload_workspace = reload_workspace