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 | |
| parent | b2b1f661e55c2a1139aef1f8f8aa4a11b10d3b01 (diff) | |
Add lsp config
| -rw-r--r-- | init.lua | 22 | ||||
| -rw-r--r-- | lua/lsp.lua | 43 |
2 files changed, 47 insertions, 18 deletions
@@ -1,22 +1,6 @@ --- Change color scheme --- set background=dark --- if has("gui_running") --- set guioptions-=m " remove menu bar --- set guioptions-=T " remove toolbar --- set guioptions-=r " remove right-hand scroll bar --- set guioptions-=L " remove left-hand scroll bar --- set guioptions-=e " vim looking tabs --- set antialias --- " set macligatures --- set guiligatures=!\"#$%&()*+-./:<=>?@[]^_{\|~ --- set guioptions+=k --- let &guifont="Fira Code:h17" --- colorscheme ayu --- else --- colorscheme molokai --- endif +-- Colorscheme vim.opt.termguicolors = true -vim.cmd.colorscheme("molokai") +vim.cmd.colorscheme("ayu") -- Tab configuration vim.opt.tabstop = 4 @@ -77,3 +61,5 @@ vim.g.netrw_liststyle = 1 require("keybindings") require("filetype-config") require("plugins") +require("lsp") + 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"} + |