return { 'mrcjkb/rustaceanvim', ft = { 'rust' }, config = function() vim.g.rustaceanvim = { server = { on_attach = function(client, bufnr) local options = { noremap = true, silent = false, buffer = bufnr } vim.keymap.set('n', 'y', function() vim.cmd.RustLsp { 'hover', 'actions' } end, vim.tbl_extend('error', options, { desc = 'Hover' })) local group = vim.api.nvim_create_augroup('lsp_document_highlight', { clear = false }) vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { callback = function() vim.lsp.buf.document_highlight() end, buffer = bufnr, group = group, desc = 'Document Highlight', }) vim.api.nvim_create_autocmd('CursorMoved', { callback = function() vim.lsp.buf.clear_references() end, buffer = bufnr, group = group, desc = 'Clear All the References', }) vim.api.nvim_create_autocmd({ 'LspDetach' }, { group = group, buffer = bufnr, callback = function() vim.lsp.buf.clear_references() vim.api.nvim_clear_autocmds { group = group, buffer = bufnr } end, }) end } } end }