diff options
Diffstat (limited to 'fnl')
-rw-r--r-- | fnl/config/which-key.fnl | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/fnl/config/which-key.fnl b/fnl/config/which-key.fnl new file mode 100644 index 0000000..b9fc923 --- /dev/null +++ b/fnl/config/which-key.fnl @@ -0,0 +1,177 @@ +;; Which-key provides a pop-up meny for some key mappings. +(module config.which-key + {autoload {util util}}) + +(def- setup { + :plugins { + :marks true + :registers true + :spelling { + :enabled true + :suggestions 20} + :presets { + :operators false + :motions false + :text_objects false + :windows true + :nav true + :z true + :g true}} + :icons { + :breadcrumb "»" + :separator "" + :group "+"} + :popup_mappings { + :scroll_down "<c-d>" + :scroll_up "<c-u>"} + :window { + :border "rounded" + :position "bottom" + :margin [ 1 0 1 0 ] + :padding [ 2 2 2 2 ] + :winblend 0} + :layout { + :height { :min 4 :max 25 } + :width { :min 20 :max 50 } + :spacing 3 + :align "left"} + :ignore_missing true + :hidden [ "<silent>" "<cmd>" "<Cmd>" "<CR>" "call" "lua" "^:" "^ " ] + :show_help true + :triggers "auto" + :triggers_blacklist { + :i [ "j" "k" ] + :v [ "j" "k" ]}}) + +(def- opts { + :mode "n" + :prefix "<leader>" + :buffer nil + :silent true + :noremap true + :nowait true}) + +(def- mappings { + :k [ '<cmd>lua require("Comment.api").toggle_current_linewise()<CR>' "Comment" ] + :a [ "<cmd>Alpha<cr>" "Alpha" ] + :b [ + "<cmd>lua require('telescope.builtin').buffers(require('telescope.themes').get_dropdown{previewer false})<cr>" + "Buffers" + ] + :e [ "<cmd>NvimTreeToggle<cr>" "Explorer" ] + :c [ "<cmd>Bdelete!<CR>" "Close Buffer" ] + :n [ "<cmd>nohlsearch<CR>" "No Highlight" ] + :f [ + "<cmd>lua require('telescope.builtin').find_files(require('telescope.themes').get_dropdown{previewer false})<cr>" + "Find files" + ] + :F [ "<cmd>Telescope file_browser<cr>" "Browse files" ] + :t [ "<cmd>Telescope live_grep theme=ivy<cr>" "Find Text" ] + :P [ "<cmd>Telescope projects<cr>" "Projects" ] + :z [ "<cmd>ZenMode<cr>" "Zen Mode" ] + :v [ "<cmd>vsplit<cr>" "Vertical Split" ] + :h [ "<cmd>split<cr>" "Horizontal Split" ] + :p { + :name "Packer" + :c [ "<cmd>PackerCompile<cr>" "Compile" ] + :i [ "<cmd>PackerInstall<cr>" "Install" ] + :s [ "<cmd>PackerSync<cr>" "Sync" ] + :S [ "<cmd>PackerStatus<cr>" "Status" ] + :u [ "<cmd>PackerUpdate<cr>" "Update" ]} + :g { + :name "Git" + :g [ "<cmd>lua _LAZYGIT_TOGGLE()<CR>" "Lazygit" ] + :j [ "<cmd>lua require 'gitsigns'.next_hunk()<cr>" "Next Hunk" ] + :k [ "<cmd>lua require 'gitsigns'.prev_hunk()<cr>" "Prev Hunk" ] + :l [ "<cmd>lua require 'gitsigns'.blame_line()<cr>" "Blame" ] + :p [ "<cmd>lua require 'gitsigns'.preview_hunk()<cr>" "Preview Hunk" ] + :r [ "<cmd>lua require 'gitsigns'.reset_hunk()<cr>" "Reset Hunk" ] + :R [ "<cmd>lua require 'gitsigns'.reset_buffer()<cr>" "Reset Buffer" ] + :s [ "<cmd>lua require 'gitsigns'.stage_hunk()<cr>" "Stage Hunk" ] + :u [ + "<cmd>lua require 'gitsigns'.undo_stage_hunk()<cr>" + "Undo Stage Hunk" + ] + :o [ "<cmd>Telescope git_status<cr>" "Open changed file" ] + :b [ "<cmd>Telescope git_branches<cr>" "Checkout branch" ] + :c [ "<cmd>Telescope git_commits<cr>" "Checkout commit" ] + :d [ + "<cmd>Gitsigns diffthis HEAD<cr>" + "Diff" + ]} + :l { + :name "LSP" + :a [ "<cmd>lua vim.lsp.buf.code_action()<cr>" "Code Action" ] + :d [ + "<cmd>Telescope lsp_document_diagnostics<cr>" + "Document Diagnostics" + ] + :w [ + "<cmd>Telescope lsp_workspace_diagnostics<cr>" + "Workspace Diagnostics" + ] + :f [ "<cmd>lua vim.lsp.buf.formatting()<cr>" "Format" ] + :i [ "<cmd>LspInfo<cr>" "Info" ] + :I [ "<cmd>LspInstallInfo<cr>" "Installer Info" ] + :j [ + "<cmd>lua vim.lsp.diagnostic.goto_next()<CR>" + "Next Diagnostic" + ] + :k [ + "<cmd>lua vim.lsp.diagnostic.goto_prev()<cr>" + "Prev Diagnostic" + ] + :l [ "<cmd>lua vim.lsp.codelens.run()<cr>" "CodeLens Action" ] + :q [ "<cmd>lua vim.lsp.diagnostic.set_loclist()<cr>" "Quickfix" ] + :r [ "<cmd>lua vim.lsp.buf.rename()<cr>" "Rename" ] + :s [ "<cmd>Telescope lsp_document_symbols<cr>" "Document Symbols" ] + :S [ + "<cmd>Telescope lsp_dynamic_workspace_symbols<cr>" + "Workspace Symbols" + ]} + :s { + :name "Search" + :b [ "<cmd>Telescope git_branches<cr>" "Checkout branch" ] + :c [ "<cmd>Telescope colorscheme<cr>" "Colorscheme" ] + :h [ "<cmd>Telescope help_tags<cr>" "Find Help" ] + :M [ "<cmd>Telescope man_pages<cr>" "Man Pages" ] + :r [ "<cmd>Telescope oldfiles<cr>" "Open Recent File" ] + :R [ "<cmd>Telescope registers<cr>" "Registers" ] + :k [ "<cmd>Telescope keymaps<cr>" "Keymaps" ] + :C [ "<cmd>Telescope commands<cr>" "Commands" ]} + :o { + :name "Orgmode" + :a [ "<cmd>lua require('orgmode').action('agenda.prompt')" "Open agenda prompt" ] + :c [ "<cmd>lua require('orgmode').action('capture.prompt')" "Open capture prompt" ]} + :r { + :name "Replace" + :r [ "<cmd>lua require('spectre').open()<cr>" "Replace" ] + :w [ + "<cmd>lua require('spectre').open_visual({select_word=true})<cr>" + "Replace Word" + ] + :f [ "<cmd>lua require('spectre').open_file_search()<cr>" "Replace Buffer" ] + } + :T { + :name "Treesitter" + :p [ "<cmd>TSPlaygroundToggle<cr>" "Playground" ]}}) + +(def- vopts { + :mode "v" + :prefix "<leader>" + :buffer nil + :silent true + :noremap true + :nowait true}) + +(def- vmappings { + :k [ + '<ESC><CMD>lua require("Comment.api").toggle_linewise_op(vim.fn.visualmode())<CR>' + "Comment" ]}) + +(let [(ok? which-key) util.load-plugin :nvim-which-key.config] + (when ok? + (do + (which-key.setup setup) + (when.register mappings opts) + (when.register vmappings vopts)))) |