diff --git a/init.lua b/init.lua index 542bde7a..907c27a2 100644 --- a/init.lua +++ b/init.lua @@ -230,18 +230,19 @@ require('nvim-treesitter.configs').setup { -- Diagnostic keymaps vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' }) vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' }) -vim.keymap.set('n', 'le', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' }) -vim.keymap.set('n', 'lq', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' }) +vim.keymap.set('n', 'de', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' }) +vim.keymap.set('n', 'dq', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' }) -- [[ Configure LSP ]] -- This function gets run when an LSP connects to a particular buffer. local on_attach = function(_, bufnr) - -- NOTE: Remember that lua is a real programming language, and as such it is possible - -- to define small helper and utility functions so you don't have to repeat yourself - -- many times. - -- - -- In this case, we create a function that lets us more easily define mappings specific - -- for LSP related items. It sets the mode, buffer and description for us each time. + -- Create a command `:Format` local to the LSP buffer + vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) + vim.lsp.buf.format() + end, { desc = 'Format current buffer with LSP' }) + + -- Create a function that lets us more easily define mappings specific + -- for LSP related items. It sets the mode, buffer and description each time. local nmap = function(keys, func, desc) if desc then desc = 'LSP: ' .. desc @@ -250,32 +251,25 @@ local on_attach = function(_, bufnr) vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc }) end - nmap('lr', vim.lsp.buf.rename, '[R]e[n]ame') - nmap('lc', vim.lsp.buf.code_action, '[C]ode [A]ction') - nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition') + nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences') nmap('gI', vim.lsp.buf.implementation, '[G]oto [I]mplementation') - nmap('lt', vim.lsp.buf.type_definition, 'Type [D]efinition') - nmap('ld', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols') - nmap('lw', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') + nmap('lr', vim.lsp.buf.rename, '[R]ename') + nmap('lc', vim.lsp.buf.code_action, '[C]ode Action') + nmap('lf', vim.lsp.buf.format, '[F]ormat') + nmap('lt', vim.lsp.buf.type_definition, '[T]ype Definition') + nmap('ld', require('telescope.builtin').lsp_document_symbols, '[D]ocument Symbols') + nmap('lw', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace Symbols') + nmap('la', vim.lsp.buf.add_workspace_folder, 'Workspace [A]dd Folder') + nmap('lR', vim.lsp.buf.remove_workspace_folder, 'Workspace [R]emove Folder') + nmap('ll', function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, 'Workspace [L]ist Folders') -- See `:help K` for why this keymap nmap('K', vim.lsp.buf.hover, 'Hover Documentation') nmap('', vim.lsp.buf.signature_help, 'Signature Documentation') - - -- Lesser used LSP functionality - nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') - nmap('la', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder') - nmap('lR', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder') - nmap('ll', function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, '[W]orkspace [L]ist Folders') - - -- Create a command `:Format` local to the LSP buffer - vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) - vim.lsp.buf.format() - end, { desc = 'Format current buffer with LSP' }) end -- Enable the following language servers @@ -290,8 +284,6 @@ local servers = { -- clangd = {}, gopls = {}, -- pyright = {}, - -- rust_analyzer = {}, - -- tsserver = {}, -- html = { filetypes = { 'html', 'twig', 'hbs'} }, clojure_lsp = {}, ocamllsp = {},