summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Guschin <guschin.drew@gmail.com>2023-10-28 00:20:53 +0400
committerAndrew Guschin <guschin.drew@gmail.com>2023-10-28 00:20:53 +0400
commit0dd04cdb31ee5324c9caa1af537735b1fb6b657a (patch)
tree30204df0a7f2db5fabfef2d5fc809d0b4ec88c8e
parentb2b1f661e55c2a1139aef1f8f8aa4a11b10d3b01 (diff)
Add lsp config
-rw-r--r--init.lua22
-rw-r--r--lua/lsp.lua43
2 files changed, 47 insertions, 18 deletions
diff --git a/init.lua b/init.lua
index 632a76c..7eacb4d 100644
--- a/init.lua
+++ b/init.lua
@@ -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"}
+