From b51f1ae28924a752258e7607fbc3210f9b18eaac Mon Sep 17 00:00:00 2001 From: Gustaf Rydholm Date: Thu, 22 Jul 2021 00:08:36 +0200 Subject: Updates based on Chris's lunarvim --- .config/nvim/lua/core/which-key.lua | 201 ++++++++++++++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 .config/nvim/lua/core/which-key.lua (limited to '.config/nvim/lua/core/which-key.lua') diff --git a/.config/nvim/lua/core/which-key.lua b/.config/nvim/lua/core/which-key.lua new file mode 100644 index 0000000..dabf832 --- /dev/null +++ b/.config/nvim/lua/core/which-key.lua @@ -0,0 +1,201 @@ +local M = {} +M.config = function() + O.plugin.which_key = { + active = false, + setup = { + plugins = { + marks = true, -- shows a list of your marks on ' and ` + registers = true, -- shows your registers on " in NORMAL or in INSERT mode + -- the presets plugin, adds help for a bunch of default keybindings in Neovim + -- No actual key bindings are created + presets = { + operators = false, -- adds help for operators like d, y, ... + motions = false, -- adds help for motions + text_objects = false, -- help for text objects triggered after entering an operator + windows = true, -- default bindings on + nav = true, -- misc bindings to work with windows + z = true, -- bindings for folds, spelling and others prefixed with z + g = true, -- bindings for prefixed with g + }, + spelling = { enabled = true, suggestions = 20 }, -- use which-key for spelling hints + }, + icons = { + breadcrumb = "»", -- symbol used in the command line area that shows your active key combo + separator = "➜", -- symbol used between a key and it's label + group = "+", -- symbol prepended to a group + }, + window = { + border = "single", -- none, single, double, shadow + position = "bottom", -- bottom, top + margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left] + padding = { 2, 2, 2, 2 }, -- extra window padding [top, right, bottom, left] + }, + layout = { + height = { min = 4, max = 25 }, -- min and max height of the columns + width = { min = 20, max = 50 }, -- min and max width of the columns + spacing = 3, -- spacing between columns + }, + hidden = { "", "", "", "", "call", "lua", "^:", "^ " }, -- hide mapping boilerplate + show_help = true, -- show help message on the command line when the popup is visible + }, + + opts = { + mode = "n", -- NORMAL mode + prefix = "", + buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings + silent = true, -- use `silent` when creating keymaps + noremap = true, -- use `noremap` when creating keymaps + nowait = true, -- use `nowait` when creating keymaps + }, + vopts = { + mode = "v", -- VISUAL mode + prefix = "", + buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings + silent = true, -- use `silent` when creating keymaps + noremap = true, -- use `noremap` when creating keymaps + nowait = true, -- use `nowait` when creating keymaps + }, + -- NOTE: Prefer using : over as the latter avoids going back in normal-mode. + -- see https://neovim.io/doc/user/map.html#:map-cmd + vmappings = { + ["/"] = { ":CommentToggle", "Comment" }, + }, + mappings = { + ["w"] = { "w!", "Save" }, + ["q"] = { "q!", "Quit" }, + ["k"] = { "CommentToggle", "Comment" }, + ["c"] = { "BufferClose!", "Close Buffer" }, + ["e"] = { "lua require'core.nvimtree'.toggle_tree()", "Explorer" }, + ["f"] = { "Telescope find_files", "Find File" }, + ["n"] = { 'let @/=""', "No Highlight" }, + ["h"] = { "vsplit", "Vertical Split" }, + ["v"] = { 'split', "Horizontal Split" }, + p = { + name = "Packer", + c = { "PackerCompile", "Compile" }, + i = { "PackerInstall", "Install" }, + r = { "lua require('utils').reload_config()", "Reload" }, + s = { "PackerSync", "Sync" }, + u = { "PackerUpdate", "Update" }, + }, + + -- " Available Debug Adapters: + -- " https://microsoft.github.io/debug-adapter-protocol/implementors/adapters/ + -- " Adapter configuration and installation instructions: + -- " https://github.com/mfussenegger/nvim-dap/wiki/Debug-Adapter-installation + -- " Debug Adapter protocol: + -- " https://microsoft.github.io/debug-adapter-protocol/ + -- " Debugging + g = { + name = "Git", + j = { "lua require 'gitsigns'.next_hunk()", "Next Hunk" }, + k = { "lua require 'gitsigns'.prev_hunk()", "Prev Hunk" }, + l = { "lua require 'gitsigns'.blame_line()", "Blame" }, + p = { "lua require 'gitsigns'.preview_hunk()", "Preview Hunk" }, + r = { "lua require 'gitsigns'.reset_hunk()", "Reset Hunk" }, + R = { "lua require 'gitsigns'.reset_buffer()", "Reset Buffer" }, + s = { "lua require 'gitsigns'.stage_hunk()", "Stage Hunk" }, + u = { + "lua require 'gitsigns'.undo_stage_hunk()", + "Undo Stage Hunk", + }, + o = { "Telescope git_status", "Open changed file" }, + b = { "Telescope git_branches", "Checkout branch" }, + c = { "Telescope git_commits", "Checkout commit" }, + C = { + "Telescope git_bcommits", + "Checkout commit(for current file)", + }, + }, + + l = { + name = "LSP", + a = { "lua vim.lsp.buf.code_action()", "Code Action" }, + d = { + "Telescope lsp_document_diagnostics", + "Document Diagnostics", + }, + w = { + "Telescope lsp_workspace_diagnostics", + "Workspace Diagnostics", + }, + f = { "silent FormatWrite", "Format" }, + i = { "LspInfo", "Info" }, + j = { + "lua vim.lsp.diagnostic.goto_next({popup_opts = {border = O.lsp.popup_border}})", + "Next Diagnostic", + }, + k = { + "lua vim.lsp.diagnostic.goto_prev({popup_opts = {border = O.lsp.popup_border}})", + "Prev Diagnostic", + }, + l = { "silent lua require('lint').try_lint()", "Lint" }, + q = { "Telescope quickfix", "Quickfix" }, + r = { "lua vim.lsp.buf.rename()", "Rename" }, + s = { "Telescope lsp_document_symbols", "Document Symbols" }, + S = { + "Telescope lsp_dynamic_workspace_symbols", + "Workspace Symbols", + }, + }, + + s = { + name = "Search", + b = { "Telescope git_branches", "Checkout branch" }, + c = { "Telescope colorscheme", "Colorscheme" }, + f = { "Telescope find_files", "Find File" }, + h = { "Telescope help_tags", "Find Help" }, + M = { "Telescope man_pages", "Man Pages" }, + r = { "Telescope oldfiles", "Open Recent File" }, + R = { "Telescope registers", "Registers" }, + t = { "Telescope live_grep", "Text" }, + k = { "Telescope keymaps", "Keymaps" }, + C = { "Telescope commands", "Commands" }, + p = { + "lua require('telescope.builtin.internal').colorscheme({enable_preview = true})", + "Colorscheme with Preview", + }, + }, + T = { + name = "Treesitter", + i = { ":TSConfigInfo", "Info" }, + }, + }, + } +end + +M.setup = function() + -- if not package.loaded['which-key'] then + -- return + -- end + local status_ok, which_key = pcall(require, "which-key") + if not status_ok then + return + end + + which_key.setup(O.plugin.which_key.setup) + + local opts = O.plugin.which_key.opts + local vopts = O.plugin.which_key.vopts + + local mappings = O.plugin.which_key.mappings + local vmappings = O.plugin.which_key.vmappings + + -- if O.plugin.ts_playground.active then + -- vim.api.nvim_set_keymap("n", "Th", ":TSHighlightCapturesUnderCursor", { noremap = true, silent = true }) + -- mappings[""] = "Highlight Capture" + -- end + + if O.plugin.zen.active then + vim.api.nvim_set_keymap("n", "z", ":ZenMode", { noremap = true, silent = true }) + mappings["z"] = "Zen" + end + + local wk = require "which-key" + + wk.register(mappings, opts) + wk.register(vmappings, vopts) + wk.register(O.user_which_key, opts) +end + +return M -- cgit v1.2.3-70-g09d2