diff options
| author | Andrew Guschin <guschin.drew@gmail.com> | 2023-10-28 00:20:53 +0400 |
|---|---|---|
| committer | Andrew Guschin <guschin.drew@gmail.com> | 2023-10-28 00:20:53 +0400 |
| commit | 0dd04cdb31ee5324c9caa1af537735b1fb6b657a (patch) | |
| tree | 30204df0a7f2db5fabfef2d5fc809d0b4ec88c8e /lua/lsp.lua | |
| parent | b2b1f661e55c2a1139aef1f8f8aa4a11b10d3b01 (diff) | |
Add lsp config
Diffstat (limited to 'lua/lsp.lua')
| -rw-r--r-- | lua/lsp.lua | 43 |
1 files changed, 43 insertions, 0 deletions
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', '<leader>ld', vim.lsp.buf.definition) + vim.keymap.set('n', '<leader>lr', vim.lsp.buf.references) + vim.keymap.set('n', '<leader>li', vim.lsp.buf.implementation) + vim.keymap.set('n', '<leader>lh', vim.lsp.buf.hover) + vim.keymap.set('n', '<leader>ls', vim.lsp.buf.signature_help) + vim.keymap.set('n', '<leader>lrn', vim.lsp.buf.rename) + end, +}) + +vim.opt.completeopt = {"menu"} + |