local m = require("utility.mappings") -- See `:help vim.lsp.*` for documentation on any of the below mapped functions -- Check if certain plugins are installed, if so, they should be used -- to define some mappings local telescope_installed, _ = pcall(require, "telescope") local lsp_signature_installed, _ = pcall(require, "lsp_signature") -- Lookups m.keymap("n", "gd", "lua vim.lsp.buf.definition()") m.keymap('n', 'gD', 'lua vim.lsp.buf.declaration()') m.keymap("n", "gr", "lua vim.lsp.buf.references()") m.keymap("n", "gi", "lua vim.lsp.buf.implementation()") m.keymap("n", "gt", "lua vim.lsp.buf.type_definition()") if telescope_installed then m.keymap('n', 'gd', 'lua require("telescope.builtin").lsp_definitions()') m.keymap('n', 'gr', 'lua require("telescope.builtin").lsp_references()') m.keymap('n', 'gi', 'lua require("telescope.builtin").lsp_implementations()') m.keymap('n', 'gt', 'lua require("telescope.builtin").lsp_type_definitions()') end -- Formatting m.keymap('n', 'gf', 'lua vim.lsp.buf.formatting()') m.keymap('v', 'gf', 'lua vim.lsp.buf.range_formatting()') -- Hover info m.keymap("n", "", "lua vim.lsp.buf.signature_help()") m.keymap("n", "M", "lua vim.lsp.buf.hover()") if lsp_signature_installed then m.keymap('n', '', 'lua require("lsp_signature").signature()') end -- Diagnostics m.keymap('n', '[g', 'lua vim.diagnostic.goto_prev()') m.keymap('n', ']g', 'lua vim.diagnostic.goto_next()') m.keymap('n', 'ge', 'lua vim.diagnostic.open_float(nil, { scope = "line", })') if telescope_installed then m.keymap('n', 'ge', 'lua require("telescope.builtin").lsp_document_diagnostics()') end -- LSP Workspace m.keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()') m.keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()') m.keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))') --Actions if telescope_installed then m.keymap('n', 'ga', 'lua require("telescope.builtin").lsp_code_actions()') m.keymap('v', 'ga', 'lua require("telescope.builtin").lsp_range_code_actions()') end -- Use custom implementation for renaming all references m.keymap('n', 'gn', 'lua require("lsp/rename").rename()')