added better rust-analyzer support.
This commit is contained in:
		
							parent
							
								
									e90208c701
								
							
						
					
					
						commit
						ed2b8c723d
					
				
					 3 changed files with 96 additions and 12 deletions
				
			
		| 
						 | 
				
			
			@ -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 {
 | 
			
		|||
		['<C-Space>'] = cmp.mapping.complete(),
 | 
			
		||||
		['<C-e>'] = cmp.mapping.close(),
 | 
			
		||||
		['<CR>'] = cmp.mapping.confirm {
 | 
			
		||||
			behavior = cmp.ConfirmBehavior.Replace,
 | 
			
		||||
			select = false,
 | 
			
		||||
			behavior = cmp.ConfirmBehavior.Insert,
 | 
			
		||||
			select = true,
 | 
			
		||||
			-- behavior = cmp.ConfirmBehavior.Replace,
 | 
			
		||||
			-- select = false,
 | 
			
		||||
		},
 | 
			
		||||
		['<Tab>'] = function(fallback)
 | 
			
		||||
			if cmp.visible() then
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										85
									
								
								neovim/.config/nvim/lua/rust-tools-setup.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								neovim/.config/nvim/lua/rust-tools-setup.lua
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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)
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue