]> localhost Git - nvim.git/commitdiff
feat: better lsp keybindings
authorJansen <[email protected]>
Sat, 12 Oct 2024 20:15:29 +0000 (16:15 -0400)
committerJansen <[email protected]>
Sat, 12 Oct 2024 20:15:29 +0000 (16:15 -0400)
init.lua

index ec8ceae80640089c6f786523959e390901119d62..51e547cb8945d2e6a70e492d86b9d14c05e3015b 100644 (file)
--- a/init.lua
+++ b/init.lua
@@ -117,20 +117,35 @@ require("lazy").setup({
       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)
@@ -174,9 +189,10 @@ vim.api.nvim_create_user_command('Econfig', edit_config, {})
 -- 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