From 26e0c95b780b145384744d15ceb79c7acc0935b8 Mon Sep 17 00:00:00 2001 From: Maciej Jur Date: Thu, 25 Jan 2024 22:57:52 +0100 Subject: [PATCH] nvim: better LSP keymaps --- nvim/lua/config/keymaps.lua | 50 +++++++++++++++++++++++-------------- nvim/lua/config/plugins.lua | 12 +++++++-- 2 files changed, 41 insertions(+), 21 deletions(-) diff --git a/nvim/lua/config/keymaps.lua b/nvim/lua/config/keymaps.lua index 9093af8..17e23cb 100644 --- a/nvim/lua/config/keymaps.lua +++ b/nvim/lua/config/keymaps.lua @@ -4,8 +4,6 @@ local t = map 't' local nv = map {'n', 'v'} -n 'mn' ':Explore ~/.config/nvim/' 'Meta: open Neovim config' - n 'ex' ':Explore' 'Netrw: open' n 'hl' ':nohl' 'Hide highlights' @@ -23,13 +21,27 @@ n '' 'j' 'Window: move down' n '' 'k' 'Window: move up' n '' 'l' 'Window: move right' + -- Diagnostics + n 'e' (vim.diagnostic.open_float) 'Open error diagnostics' n '[d' (vim.diagnostic.goto_prev) 'Previous diagnostic message' n ']d' (vim.diagnostic.goto_next) 'Next diagnostic message' n 'dl' (vim.diagnostic.setloclist) 'Diagnostic: list messages' + +-- Meta + +local function open_config() + vim.fn.chdir '~/.config/nvim' + vim.cmd [[:Explore]] +end + +n 'mn' (open_config) 'Meta: neovim config' + + -- LSP + do local group = vim.api.nvim_create_augroup('UserLspConfig', {}) @@ -37,28 +49,28 @@ do -- Enable completion triggered by vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc' + local function format() + vim.lsp.buf.format({ async = true }) + end + local function workspaces_list() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end - local function format() - vim.lsp.buf.format({async = true}) - end - local buffer = ev.buf - n 'K' (vim.lsp.buf.hover) {'Show hover help', buffer} - n 'gD' (vim.lsp.buf.declaration) {'Go to declaration', buffer} - n 'gd' (vim.lsp.buf.definition) {'Go to definition', buffer} - n 'gi' (vim.lsp.buf.implementation) {'Go to implementation', buffer} - n 'gr' (vim.lsp.buf.references) {'Show references', buffer} - n 'D' (vim.lsp.buf.type_definition) {'Go to type definition', buffer} - n '' (vim.lsp.buf.signature_help) {'Signature help', buffer} - n 'wa' (vim.lsp.buf.add_workspace_folder) {'Add workspace folder', buffer} - n 'wr' (vim.lsp.buf.remove_workspace_folder) {'Remove workspace folder', buffer} - n 'wl' (workspaces_list) {'List workspace folders', buffer} - n 'lr' (vim.lsp.buf.rename) {'Rename identifier', buffer} - nv 'la' (vim.lsp.buf.code_action) {'Show code actions', buffer} - n 'lf' (format) {'Format file', buffer} + n 'K' (vim.lsp.buf.hover) {'LSP: show hover help', buffer} + n '' (vim.lsp.buf.signature_help) {'LSP: signature help', buffer} + n 'ld' (vim.lsp.buf.definition) {'LSP: definition', buffer} + n 'lD' (vim.lsp.buf.declaration) {'LSP: declaration', buffer} + n 'li' (vim.lsp.buf.implementation) {'LSP: implementation', buffer} + n 'lR' (vim.lsp.buf.references) {'LSP: references', buffer} + n 'lt' (vim.lsp.buf.type_definition) {'LSP: type definition', buffer} + n 'lr' (vim.lsp.buf.rename) {'LSP: rename identifier', buffer} + nv 'la' (vim.lsp.buf.code_action) {'LSP: code actions', buffer} + n 'lf' (format) {'LSP: format file', buffer} + n 'wa' (vim.lsp.buf.add_workspace_folder) {'LSP: add workspace folder', buffer} + n 'wr' (vim.lsp.buf.remove_workspace_folder) {'LSP: remove workspace folder', buffer} + n 'wl' (workspaces_list) {'LSP: list workspace folders', buffer} end vim.api.nvim_create_autocmd('LspAttach', { diff --git a/nvim/lua/config/plugins.lua b/nvim/lua/config/plugins.lua index 697caef..8e359b4 100644 --- a/nvim/lua/config/plugins.lua +++ b/nvim/lua/config/plugins.lua @@ -67,6 +67,7 @@ return { n 'fb' (builtin.buffers) 'Telescope: buffers' n 'fg' (builtin.live_grep) 'Telescope: grep' n 'fh' (builtin.help_tags) 'Telescope: docs' + n 'fk' (builtin.keymaps) 'Telescope: keymaps' if is 'standalone' then n 'fn' (ext.notify.notify) 'Telescope: notifications' @@ -170,6 +171,7 @@ return { -- Git: ops { 'NeogitOrg/neogit', + enabled = is 'standalone', dependencies = { 'nvim-lua/plenary.nvim', 'sindrets/diffview.nvim', @@ -178,9 +180,15 @@ return { config = function() local neogit = require 'neogit' - n 'gn' (neogit.open) 'Git: Neogit' + neogit.setup { + graph_style = 'unicode', + integrations = { + telescope = true, + diffview = true, + } + } - neogit.setup({}) + n 'gn' (neogit.open) 'Git: Neogit' end },