From 0dd04cdb31ee5324c9caa1af537735b1fb6b657a Mon Sep 17 00:00:00 2001 From: Andrew Guschin Date: Sat, 28 Oct 2023 00:20:53 +0400 Subject: Add lsp config --- lua/lsp.lua | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 lua/lsp.lua (limited to 'lua') diff --git a/lua/lsp.lua b/lua/lsp.lua new file mode 100644 index 0000000..b08cce0 --- /dev/null +++ b/lua/lsp.lua @@ -0,0 +1,43 @@ +local lspconf = { + { + pattern = {"*.rs"}, + options = { + name = 'rust-analyzer', + cmd = {'rustup', 'run', 'stable', 'rust-analyzer'}, + root_dir = vim.fs.dirname(vim.fs.find({'Cargo.toml'}, { upward = true })[1]), + }, + format = true, + } +} + +for _, config in pairs(lspconf) do + vim.api.nvim_create_autocmd("BufEnter", { + pattern = config.pattern, + callback = function() + local client = vim.lsp.start(config.options) + vim.lsp.buf_attach_client(0, client) + end + }) + if config.format then + vim.api.nvim_create_autocmd("BufWritePre", { + pattern = config.pattern, + callback = function() + vim.lsp.buf.format({ async = false }) + end + }) + end +end + +vim.api.nvim_create_autocmd('LspAttach', { + callback = function(args) + vim.keymap.set('n', 'ld', vim.lsp.buf.definition) + vim.keymap.set('n', 'lr', vim.lsp.buf.references) + vim.keymap.set('n', 'li', vim.lsp.buf.implementation) + vim.keymap.set('n', 'lh', vim.lsp.buf.hover) + vim.keymap.set('n', 'ls', vim.lsp.buf.signature_help) + vim.keymap.set('n', 'lrn', vim.lsp.buf.rename) + end, +}) + +vim.opt.completeopt = {"menu"} + -- cgit v1.2.3