for k,v in pairs(automatic) do ensure_installed[k] = v end
require('mason-lspconfig').setup({ ensure_installed = ensure_installed })
- -- LSP
+ -- LSP =========================================================================
local function lsp_keymaps_on_attach(_, bufnr)
local bufopts = { noremap = true, silent = true, buffer = bufnr }
-- Open in a new tab
+ local function n(cmd) return "<cmd>lua " .. cmd .. "()<CR>" end
+ local function ns(cmd)
+ return "<cmd>split | wincmd j | lua " .. cmd .. "()<CR>"
+ end
+ local function nv(cmd)
+ return "<cmd>vsplit | wincmd l | lua " .. cmd .. "()<CR>"
+ end
local function nt(cmd)
tab_next = true
return "<cmd>tab split | lua " .. cmd .. "()<CR>"
end
- vim.keymap.set('n', 'gD', nt("vim.lsp.buf.declaration"), bufopts)
- vim.keymap.set('n', 'gd', nt("vim.lsp.buf.definition"), bufopts)
- vim.keymap.set('n', 'gi', nt("vim.lsp.buf.implementation"), bufopts)
- vim.keymap.set('n', 'gf', nt("vim.lsp.buf.type_definition"), bufopts)
- vim.keymap.set('n', 'gr', nt("vim.lsp.buf.references"), bufopts)
+
+ local function init_g_cmd(key, command)
+ vim.keymap.set('n', '<leader>' .. key, n(command), bufopts)
+ vim.keymap.set('n', '<leader>s' .. key, ns(command), bufopts)
+ vim.keymap.set('n', '<leader>v' .. key, nv(command), bufopts)
+ vim.keymap.set('n', '<leader>t' .. key, nt(command), bufopts)
+ end
+
+ init_g_cmd('gD', "vim.lsp.buf.declaration")
+ init_g_cmd('gd', "vim.lsp.buf.definition")
+ init_g_cmd('gi', "vim.lsp.buf.implementation")
+ init_g_cmd('gf', "vim.lsp.buf.type_definition")
+ vim.keymap.set('n', '<leader>gr', vim.lsp.buf.references, bufopts)
vim.keymap.set('n', '<leader>kd', vim.diagnostic.open_float, bufopts)
vim.keymap.set('n', '<leader>kk', vim.lsp.buf.signature_help, bufopts)
-- KeyBindings =================================================================
vim.g.mapleader = vim.keycode' '
+
-- Utils
vim.keymap.set('n', '<leader>H', function() vim.cmd [[nohl]] end)
-vim.keymap.set('n', '<leader>g', function() vim.cmd [[Neogit]] end)
+vim.keymap.set('n', '<leader>`', function() vim.cmd [[Neogit]] end)
vim.keymap.set('n', '<leader>[', function()
if (vim.api.nvim_get_option_value("number", {})) then