nvim: Improve LSP stuff
This commit is contained in:
@ -1,6 +1,8 @@
|
||||
vim.g.mapleader = " "
|
||||
vim.g.localleader = "\\"
|
||||
|
||||
|
||||
-- Install Lazy
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||
@ -17,6 +19,48 @@ if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
-- TODO: get colored renders working
|
||||
vim.g.rustaceanvim = {
|
||||
-- Plugin configuration
|
||||
tools = {},
|
||||
|
||||
-- LSP configuration
|
||||
server = {
|
||||
on_attach = function(client, bufnr)
|
||||
vim.keymap.set('n', '<leader>lg', pick_rust_target,
|
||||
{ desc = "Pick Target (Rust)", buffer = bufnr })
|
||||
vim.keymap.set('n', "<leader>a", function() vim.cmd.RustLsp('codeAction') end,
|
||||
{ desc = "Code Action (Rust)", buffer = bufnr })
|
||||
vim.keymap.set('n', "<leader>e", function() vim.cmd.RustLsp('renderDiagnostic', 'current') end,
|
||||
{ desc = "Render Diagnostic", buffer = bufnr })
|
||||
end,
|
||||
default_settings = {
|
||||
['rust-analyzer'] = {
|
||||
checkOnSave = { overrideCommand = "cargo check --message-format=json-diagnostic-rendered-ansi" },
|
||||
},
|
||||
},
|
||||
settings = function(project_root)
|
||||
local ra = require('rustaceanvim.config.server')
|
||||
local settings = ra.load_rust_analyzer_settings(project_root, {
|
||||
settings_file_pattern = 'rust-analyzer.json'
|
||||
})
|
||||
|
||||
-- override default target (if `set_rust_target` has been called)
|
||||
local rust_target = vim.g["rust-analyzer-target"]
|
||||
if rust_target then
|
||||
settings["rust-analyzer"]["cargo"] = { target = rust_target }
|
||||
end
|
||||
|
||||
vim.g["rust-analyzer-target-test"] = settings
|
||||
|
||||
return settings
|
||||
end,
|
||||
},
|
||||
|
||||
-- DAP configuration
|
||||
dap = {},
|
||||
}
|
||||
|
||||
|
||||
require('plugins')
|
||||
require('vars')
|
||||
@ -27,9 +71,16 @@ require('theme')
|
||||
require('statusline')
|
||||
--require('debugger') -- TODO:
|
||||
|
||||
local lspconfig = require("lspconfig")
|
||||
|
||||
-- Mason Setup
|
||||
local language_servers = {
|
||||
"pylsp",
|
||||
"eslint",
|
||||
"cssls",
|
||||
"jsonls",
|
||||
"ts_ls",
|
||||
"gopls",
|
||||
"wgsl_analyzer",
|
||||
}
|
||||
require("mason").setup({
|
||||
ui = {
|
||||
icons = {
|
||||
@ -38,17 +89,43 @@ require("mason").setup({
|
||||
package_uninstalled = "",
|
||||
},
|
||||
},
|
||||
ensure_installed = { "pylsp", "eslint", "gopls", "wgsl_analyzer" },
|
||||
ensure_installed = language_servers,
|
||||
})
|
||||
require("mason-lspconfig").setup_handlers {
|
||||
-- rust_analyzer is managed by rustaceanvim
|
||||
['rust_analyzer'] = function() end
|
||||
}
|
||||
require("mason-lspconfig").setup()
|
||||
lspconfig.pylsp.setup {}
|
||||
lspconfig.eslint.setup {}
|
||||
lspconfig.gopls.setup {}
|
||||
lspconfig.wgsl_analyzer.setup {}
|
||||
|
||||
local lspconfig = require("lspconfig")
|
||||
for _,l in pairs(language_servers) do
|
||||
lspconfig[l].setup {}
|
||||
end
|
||||
|
||||
local compare = require "cmp.config.compare"
|
||||
require('cmp').setup.filetype({ "rust" }, {
|
||||
sorting = {
|
||||
priority_weight = 2,
|
||||
comparators = {
|
||||
-- deprioritize `.box`, `.mut`, etc.
|
||||
require("cmp-rust").deprioritize_postfix,
|
||||
-- deprioritize `Borrow::borrow` and `BorrowMut::borrow_mut`
|
||||
require("cmp-rust").deprioritize_borrow,
|
||||
-- deprioritize `Deref::deref` and `DerefMut::deref_mut`
|
||||
require("cmp-rust").deprioritize_deref,
|
||||
-- deprioritize `Into::into`, `Clone::clone`, etc.
|
||||
require("cmp-rust").deprioritize_common_traits,
|
||||
compare.offset,
|
||||
compare.exact,
|
||||
compare.score,
|
||||
--compare.recently_used,
|
||||
compare.locality,
|
||||
compare.sort_text,
|
||||
compare.length,
|
||||
compare.order,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
require("todo-comments").setup()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user