summaryrefslogtreecommitdiff
path: root/fnl/config/which-key.fnl
blob: 70080b72cb5bb3beba03a336a5cdce9726b4f06b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
;; 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 [which-key (util.load-plugin :which-key)]
  (which-key.setup setup)
  (which-key.register mappings opts)
  (which-key.register vmappings vopts))