From ed2b8c723d65607fb175f8a76c6941da541c670b Mon Sep 17 00:00:00 2001 From: Gabe Venberg Date: Fri, 17 Jun 2022 14:50:31 -0500 Subject: [PATCH] added better rust-analyzer support. --- neovim/.config/nvim/lua/cmp-lsp.lua | 8 +- neovim/.config/nvim/lua/packages.lua | 15 ++-- neovim/.config/nvim/lua/rust-tools-setup.lua | 85 ++++++++++++++++++++ 3 files changed, 96 insertions(+), 12 deletions(-) create mode 100644 neovim/.config/nvim/lua/rust-tools-setup.lua diff --git a/neovim/.config/nvim/lua/cmp-lsp.lua b/neovim/.config/nvim/lua/cmp-lsp.lua index 90e585b..dd54cbd 100644 --- a/neovim/.config/nvim/lua/cmp-lsp.lua +++ b/neovim/.config/nvim/lua/cmp-lsp.lua @@ -3,7 +3,7 @@ local luasnip = require 'luasnip' -- Set completeopt to have a better completion experience -vim.o.completeopt='menu,menuone,preview,noinsert' +vim.o.completeopt='menu,menuone,preview,noinsert,noselect' -- nvim-cmp setup local cmp = require 'cmp' @@ -21,8 +21,10 @@ cmp.setup { [''] = cmp.mapping.complete(), [''] = cmp.mapping.close(), [''] = cmp.mapping.confirm { - behavior = cmp.ConfirmBehavior.Replace, - select = false, + behavior = cmp.ConfirmBehavior.Insert, + select = true, + -- behavior = cmp.ConfirmBehavior.Replace, + -- select = false, }, [''] = function(fallback) if cmp.visible() then diff --git a/neovim/.config/nvim/lua/packages.lua b/neovim/.config/nvim/lua/packages.lua index f4fea6b..4566ef5 100644 --- a/neovim/.config/nvim/lua/packages.lua +++ b/neovim/.config/nvim/lua/packages.lua @@ -33,7 +33,7 @@ return require('packer').startup(function(use) 'pyright', 'bashls', 'rust_analyzer', - 'sumenko_lua', + 'sumneko_lua', 'texlab', }, automatic_installation = false, @@ -272,13 +272,6 @@ return require('packer').startup(function(use) config = function() require'competitest'.setup() end } - use {'folke/todo-comments.nvim', - requires = 'nvim-lua/plenary.nvim', - config = function() - require('todo-comments').setup() - end - } - use {'sudormrfbin/cheatsheet.nvim', requires = { @@ -296,7 +289,11 @@ return require('packer').startup(function(use) --language specific tools. - use 'simrat39/rust-tools.nvim' + use{'simrat39/rust-tools.nvim', + config=function() + require('rust-tools-setup') + end + } if Packer_Bootstrap then require('packer').sync() diff --git a/neovim/.config/nvim/lua/rust-tools-setup.lua b/neovim/.config/nvim/lua/rust-tools-setup.lua new file mode 100644 index 0000000..6f243f3 --- /dev/null +++ b/neovim/.config/nvim/lua/rust-tools-setup.lua @@ -0,0 +1,85 @@ +local nvim_lsp = require'lspconfig' +local opts = { + tools = { + autoSetHints = true, + hover_with_actions = true, + + -- how to execute terminal commands + executor = require("rust-tools/executors").termopen, + inlay_hints = { + -- Only show inlay hints for the current line + only_current_line = false, + -- Event which triggers a refersh of the inlay hints. + only_current_line_autocmd = "CursorHold", + -- whether to show parameter hints with the inlay hints or not + show_parameter_hints = true, + -- whether to show variable name before type hints with the inlay hints or not + show_variable_name = false, + -- prefix for parameter hints + parameter_hints_prefix = "<- ", + -- prefix for all the other hints (type, chaining) + other_hints_prefix = "=> ", + -- whether to align to the lenght of the longest line in the file + max_len_align = false, + -- padding from the left if max_len_align is true + max_len_align_padding = 1, + -- whether to align to the extreme right or not + right_align = true, + -- padding from the right if right_align is true + right_align_padding = 7, + -- The color of the hints + highlight = "Comment", + }, + hover_actions = { + -- the border that is used for the hover window + border = { + { "╭", "FloatBorder" }, + { "─", "FloatBorder" }, + { "╮", "FloatBorder" }, + { "│", "FloatBorder" }, + { "╯", "FloatBorder" }, + { "─", "FloatBorder" }, + { "╰", "FloatBorder" }, + { "│", "FloatBorder" }, + }, + -- whether the hover action window gets automatically focused + auto_focus = false, + }, + -- settings for showing the crate graph based on graphviz and the dot + -- command + crate_graph = { + -- Backend used for displaying the graph + backend = "x11", + -- where to store the output, nil for no output stored (relative + -- path from pwd) + output = nil, + -- true for all crates.io and external crates, false only the local + -- crates + full = true, + }, +}, +-- all the opts to send to nvim-lspconfig +server = { + -- standalone file support + -- setting it to false may improve startup time + standalone = true, + settings = { + -- rust-analyer options + ["rust-analyzer"] = { + -- enable clippy on save + checkOnSave = { + command = "clippy" + }, + } + } +}, + -- debugging stuff + dap = { + adapter = { + type = "executable", + command = "lldb-vscode", + name = "rt_lldb", + }, + }, +} +require('rust-tools').setup(opts)