local map = require('cosmic.utils').map local M = {} -- Mappings. function M.init(client, bufnr) -- See `:help vim.lsp.*` for documentation on any of the below functions local function set_keymap(mode, lhs, rhs) map(mode, lhs, rhs, { buffer = bufnr, }) end set_keymap('n', 'gd', 'lua require("telescope.builtin").lsp_definitions()') set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()') set_keymap('n', 'gi', 'lua require("telescope.builtin").lsp_implementations()') set_keymap('n', 'gt', 'lua require("telescope.builtin").lsp_type_definitions()') set_keymap('n', 'gr', 'lua require("telescope.builtin").lsp_references()') set_keymap('n', 'gn', 'lua require("cosmic-ui").rename()') -- diagnostics set_keymap('n', '[g', 'lua vim.diagnostic.goto_prev()') set_keymap('n', ']g', 'lua vim.diagnostic.goto_next()') set_keymap('n', 'ge', 'lua vim.diagnostic.open_float(nil, { scope = "line", })') set_keymap('n', 'ge', 'Telescope diagnostics bufnr=0') -- hover set_keymap('n', 'K', 'lua vim.lsp.buf.hover()') -- code actions set_keymap('n', 'ga', 'lua require("cosmic-ui").code_actions()') set_keymap('v', 'ga', 'lua require("cosmic-ui").range_code_actions()') -- formatting set_keymap('n', 'gf', 'lua vim.lsp.buf.formatting()') set_keymap('v', 'gf', 'lua vim.lsp.buf.range_formatting()') -- lsp workspace set_keymap('n', 'wd', 'Telescope diagnostics') set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()') set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()') set_keymap( 'n', 'wl', 'lua require("cosmic.utils.logger"):log(vim.inspect(vim.lsp.buf.list_workspace_folders()))' ) if client.name == 'tsserver' then -- typescript helpers set_keymap('n', 'gr', ':TSLspRenameFile') set_keymap('n', 'go', ':TSLspOrganize') set_keymap('n', 'gi', ':TSLspImportAll') end end return M