diff --git a/lua/codecraft/plugin/lsp/lsp.lua b/lua/codecraft/plugin/lsp/lsp.lua index 1e5fd67e427c35996e1a801f4e25b1d1739770c9..99f63af8a3e7619a75d71ae699b0828eac3b6f60 100644 --- a/lua/codecraft/plugin/lsp/lsp.lua +++ b/lua/codecraft/plugin/lsp/lsp.lua @@ -1,52 +1,52 @@ -- LSP settings. -- 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. - local nmap = function(keys, func, desc) - if desc then - desc = 'LSP: ' .. desc - end + -- 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. + local nmap = function(keys, func, desc) + if desc then + desc = "LSP: " .. desc + end - vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc }) - end + vim.keymap.set("n", keys, func, { buffer = bufnr, desc = desc }) + end - if _.server_capabilities.documentSymbolProvider then - require('nvim-navic').attach(_, bufnr) - end + if _.server_capabilities.documentSymbolProvider then + require("nvim-navic").attach(_, bufnr) + end - nmap('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame') - nmap('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction') - nmap('<leader>di', vim.diagnostic.open_float, '[D]iagnostic [I]nfo') - nmap('<leader>dv', '<cmd>Telescope diagnostics<CR>', '[D]iagnostic [V]iew') + nmap("<leader>rn", vim.lsp.buf.rename, "[R]e[n]ame") + nmap("<leader>ca", vim.lsp.buf.code_action, "[C]ode [A]ction") + nmap("<leader>di", vim.diagnostic.open_float, "[D]iagnostic [I]nfo") + nmap("<leader>dv", "<cmd>Telescope diagnostics<CR>", "[D]iagnostic [V]iew") - nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition') - nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences') - nmap('gI', vim.lsp.buf.implementation, '[G]oto [I]mplementation') - nmap('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition') - nmap('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols') - nmap('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') + nmap("gd", vim.lsp.buf.definition, "[G]oto [D]efinition") + nmap("gr", require("telescope.builtin").lsp_references, "[G]oto [R]eferences") + nmap("gI", vim.lsp.buf.implementation, "[G]oto [I]mplementation") + nmap("<leader>D", vim.lsp.buf.type_definition, "Type [D]efinition") + nmap("<leader>ds", require("telescope.builtin").lsp_document_symbols, "[D]ocument [S]ymbols") + nmap("<leader>ws", require("telescope.builtin").lsp_dynamic_workspace_symbols, "[W]orkspace [S]ymbols") - -- See `:help K` for why this keymap - nmap('<leader>K', vim.lsp.buf.hover, 'Hover Documentation') - nmap('<leader>k', vim.lsp.buf.signature_help, 'Signature Documentation') + -- See `:help K` for why this keymap + nmap("<leader>K", vim.lsp.buf.hover, "Hover Documentation") + nmap("<leader>k", vim.lsp.buf.signature_help, "Signature Documentation") - -- Lesser used LSP functionality - nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') - nmap('<leader>wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder') - nmap('<leader>wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder') - nmap('<leader>wl', function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, '[W]orkspace [L]ist Folders') + -- Lesser used LSP functionality + nmap("gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration") + nmap("<leader>wa", vim.lsp.buf.add_workspace_folder, "[W]orkspace [A]dd Folder") + nmap("<leader>wr", vim.lsp.buf.remove_workspace_folder, "[W]orkspace [R]emove Folder") + nmap("<leader>wl", 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' }) + -- 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 -- Feel free to add/remove any LSPs that you want here. They will automatically be installed. @@ -54,61 +54,61 @@ end -- Add any additional override configuration in the following tables. They will be passed to -- the `settings` field of the server config. You must look up that documentation yourself. local servers = { - clangd = {}, - html = {}, - emmet_ls = {}, - cssls = {}, - tsserver = {}, - pyright = {}, - yamlls = {}, - rust_analyzer = { - imports = { - granularity = { - group = "module", - }, - prefix = "self", - }, - cargo = { - buildScripts = { - enable = true, - }, - }, - procMacro = { - enable = true - }, - }, - marksman = {}, - lua_ls = { - Lua = { - workspace = { checkThirdParty = false }, - telemetry = { enable = false }, - }, - }, + clangd = {}, + html = {}, + emmet_ls = {}, + cssls = {}, + tsserver = {}, + pyright = {}, + yamlls = {}, + rust_analyzer = { + imports = { + granularity = { + group = "module", + }, + prefix = "self", + }, + cargo = { + buildScripts = { + enable = true, + }, + }, + procMacro = { + enable = true, + }, + }, + marksman = {}, + lua_ls = { + Lua = { + workspace = { checkThirdParty = false }, + telemetry = { enable = false }, + }, + }, } -- -require('completion') +require("completion") -- nvim-cmp supports additional completion capabilities, so broadcast that to servers local capabilities = vim.lsp.protocol.make_client_capabilities() -capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities) +capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities) capabilities.textDocument.completion.completionItem.snippetSupport = true -- Setup mason so it can manage external tooling -require('mason').setup() +require("mason").setup() -- Ensure the servers above are installed -local mason_lspconfig = require 'mason-lspconfig' -mason_lspconfig.setup { - ensure_installed = vim.tbl_keys(servers), -} +local mason_lspconfig = require("mason-lspconfig") +mason_lspconfig.setup({ + ensure_installed = vim.tbl_keys(servers), +}) -mason_lspconfig.setup_handlers { - function(server_name) - require('lspconfig')[server_name].setup { - capabilities = capabilities, - on_attach = on_attach, - settings = servers[server_name], - } - end, -} +mason_lspconfig.setup_handlers({ + function(server_name) + require("lspconfig")[server_name].setup({ + capabilities = capabilities, + on_attach = on_attach, + settings = servers[server_name], + }) + end, +}) -- Turn on lsp status information -require('fidget').setup() +require("fidget").setup()