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() diagnostics = { virtual_text = { float = { border = { { "┌", "FloatBorder" }, { "─", "FloatBorder" }, { "┐", "FloatBorder" }, { "│", "FloatBorder" }, { "┘", "FloatBorder" }, { "─", "FloatBorder" }, { "└", "FloatBorder" }, { "│", "FloatBorder" }, }, }, }, }, inlay_hints = { enabled = true, }, servers = { lua_ls = { settings = { Lua = { hint = { enable = true, }, }, }, }, tsserver = { init_options = { preferences = { disableSuggestions = true, }, }, settings = { typescript = { format = { indentSize = vim.o.shiftwidth, convertTabsToSpaces = vim.o.expandtab, tabSize = vim.o.tabstop, }, inlayHints = { includeInlayParameterNameHints = "all", includeInlayParameterNameHintsWhenArgumentMatchesName = false, includeInlayFunctionParameterTypeHints = true, includeInlayVariableTypeHints = false, includeInlayVariableTypeHintsWhenTypeMatchesName = false, includeInlayPropertyDeclarationTypeHints = true, includeInlayFunctionLikeReturnTypeHints = true, includeInlayEnumMemberValueHints = true, }, }, javascript = { format = { indentSize = vim.o.shiftwidth, convertTabsToSpaces = vim.o.expandtab, tabSize = vim.o.tabstop, }, inlayHints = { includeInlayParameterNameHints = "all", includeInlayParameterNameHintsWhenArgumentMatchesName = false, includeInlayFunctionParameterTypeHints = true, includeInlayVariableTypeHints = false, includeInlayVariableTypeHintsWhenTypeMatchesName = false, includeInlayPropertyDeclarationTypeHints = true, includeInlayFunctionLikeReturnTypeHints = true, includeInlayEnumMemberValueHints = true, }, }, completions = { completeFunctionCalls = true, }, }, }, }, }, }, { "simrat39/rust-tools.nvim", lazy = true, opts = function(_, opts) opts.tools = { inlay_hints = { auto = false, }, } end, }, { "aznhe21/actions-preview.nvim", event = "BufRead", opts = { telescope = { sorting_strategy = "ascending", layout_strategy = "vertical", layout_config = { width = 0.8, height = 0.9, prompt_position = "top", preview_cutoff = 20, preview_height = function(_, _, max_lines) return max_lines - 15 end, }, }, }, }, { "dnlhc/glance.nvim", cmd = { "Glance" }, opts = { border = { enable = true, }, }, }, }