diff --git a/.config/nvim/lua/plugins/lspconfig.lua b/.config/nvim/lua/plugins/lspconfig.lua index 451ad449..ba21f174 100644 --- a/.config/nvim/lua/plugins/lspconfig.lua +++ b/.config/nvim/lua/plugins/lspconfig.lua @@ -3,11 +3,57 @@ return { "neovim/nvim-lspconfig", init = function() local keys = require("lazyvim.plugins.lsp.keymaps").get() + keys[#keys + 1] = { "cl", false } + keys[#keys + 1] = { "cli", "LspInfo", desc = "LspInfo" } + + -- add more lsp keymaps + -- keys[#keys + 1] = { "cla", vim.lsp.buf.add_workspace_folder, desc = "Add Folder" } + -- keys[#keys + 1] = { "clr", vim.lsp.buf.remove_workspace_folder, desc = "Remove Folder" } + keys[#keys + 1] = { + "cll", + "lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))", + desc = "List Folders", + } + keys[#keys + 1] = { "clh", vim.lsp.codelens.run, desc = "Run Code Lens" } + keys[#keys + 1] = { "cld", vim.lsp.codelens.refresh, desc = "Refresh Code Lens" } + keys[#keys + 1] = { "clr", "LspRestart", desc = "Restart Lsp" } + keys[#keys + 1] = { "cls", "LspStart", desc = "Start Lsp" } + keys[#keys + 1] = { "clS", "LspStop", desc = "Stop Lsp" } + require("which-key").register({ + ["cl"] = { name = "+lsp" }, + }) -- keys[#keys + 1] = { "gd", "Glance definitions", desc = "Goto definition" } keys[#keys + 1] = { "gr", "Glance references", desc = "References" } keys[#keys + 1] = { "gy", "Glance type_definitions", desc = "Goto t[y]pe definitions" } keys[#keys + 1] = { "gI", "Glance implementations", desc = "Goto implementations" } keys[#keys + 1] = { "ca", require("actions-preview").code_actions, desc = "Code Action Preview" } + require("lazyvim.util").lsp.on_attach(function(client, buffer) + if client.supports_method("textDocument/documentSymbol") then + -- Enable inlay hints if the client supports it. + if client.server_capabilities.inlayHintProvider then + local inlay_hints_group = vim.api.nvim_create_augroup("InlayHints", { clear = true }) + + -- Initial inlay hint display. + local mode = vim.api.nvim_get_mode().mode + vim.lsp.inlay_hint(buffer, mode == "n" or mode == "v") + + vim.api.nvim_create_autocmd("InsertEnter", { + group = inlay_hints_group, + buffer = buffer, + callback = function() + vim.lsp.inlay_hint(buffer, false) + end, + }) + vim.api.nvim_create_autocmd("InsertLeave", { + group = inlay_hints_group, + buffer = buffer, + callback = function() + vim.lsp.inlay_hint(buffer, true) + end, + }) + end + end + end) end, opts = { -- options for vim.diagnostic.config() @@ -31,6 +77,15 @@ return { enabled = true, }, servers = { + lua_ls = { + settings = { + Lua = { + hint = { + enable = true, + }, + }, + }, + }, tsserver = { init_options = { preferences = { @@ -80,4 +135,15 @@ return { }, }, }, + { + "simrat39/rust-tools.nvim", + lazy = true, + opts = function(_, opts) + opts.tools = { + inlay_hints = { + auto = false, + }, + } + end, + }, }