2022-04-05 19:57:44 +00:00
|
|
|
(let [mod {}
|
|
|
|
keymap vim.keymap
|
2024-12-27 00:47:43 +00:00
|
|
|
(ok-substitute substitute) (pcall require :substitute)
|
|
|
|
(ok-fzf fzf) (pcall require :fzf-lua)
|
2024-12-26 19:33:55 +00:00
|
|
|
fzf-layout-bottom {:winopts_fn #(let [height (math.floor (* vim.o.lines
|
|
|
|
0.4))]
|
|
|
|
{:split (.. "belowright new | resize "
|
|
|
|
(tostring height))})}
|
|
|
|
fzf-layout-dropdown {:winopts {:height 0.4
|
|
|
|
:width 0.6
|
|
|
|
:preview {:hidden :hidden}}}
|
2024-12-27 00:47:43 +00:00
|
|
|
(ok-npairs npairs) (pcall require :nvim-autopairs)
|
|
|
|
(ok-hover hover) (pcall require :hover)
|
|
|
|
(ok-gitsigns gitsigns) (pcall require :gitsigns)
|
|
|
|
(ok-neogit neogit) (pcall require :neogit)
|
|
|
|
(ok-wk wk) (pcall require :which-key)
|
2022-04-23 18:51:50 +00:00
|
|
|
repl (require :nifoc.repl)
|
2024-04-22 21:14:48 +00:00
|
|
|
repo (require :nifoc.repo)
|
2022-09-22 20:35:10 +00:00
|
|
|
formatting (require :nifoc.formatting)]
|
2022-04-05 19:57:44 +00:00
|
|
|
(fn mod.setup []
|
|
|
|
(keymap.set :n :<space> :<nop> {:noremap true})
|
2022-04-23 18:51:50 +00:00
|
|
|
;; Leader Mappings
|
2024-12-27 00:47:43 +00:00
|
|
|
(when ok-fzf
|
|
|
|
(keymap.set :n :<leader>o fzf.files {:desc "Find Files"})
|
|
|
|
(keymap.set :n :<leader>s #(fzf.live_grep fzf-layout-bottom)
|
|
|
|
{:desc "Live Grep"}))
|
2022-04-23 18:51:50 +00:00
|
|
|
(keymap.set :n :<leader>fn :<cmd>enew<CR> {:desc "New File"})
|
2023-06-27 18:26:17 +00:00
|
|
|
(keymap.set :n :<leader>u "<cmd>UrlView buffer<CR>" {:desc "Open UrlView"})
|
2023-10-15 20:08:36 +00:00
|
|
|
(keymap.set :n :<leader>c repl.open-shell {:desc "Open Shell"})
|
|
|
|
(keymap.set :n :<leader>r repl.open-repl {:desc "Open REPL"})
|
2024-12-27 00:47:43 +00:00
|
|
|
(when ok-fzf
|
|
|
|
(keymap.set :n :<leader>bl fzf.buffers {:desc "List Buffers"})
|
|
|
|
(keymap.set :n :<leader>bf fzf.grep_curbuf {:desc "Find In Buffer"})
|
|
|
|
(keymap.set :n :<leader>bt fzf.treesitter {:desc "Find via Treesitter"}))
|
|
|
|
(when ok-neogit
|
|
|
|
(keymap.set :n :<leader>g #(neogit.open {:kind :split})
|
|
|
|
{:desc "Open Neogit"})
|
|
|
|
(keymap.set :n :<leader>vs #(neogit.open {:kind :split})
|
|
|
|
{:desc "VCS Status"}))
|
|
|
|
(when ok-fzf
|
|
|
|
(keymap.set :n :<leader>vb #(fzf.git_branches fzf-layout-dropdown)
|
|
|
|
{:desc "List VCS Branches"}))
|
|
|
|
(when ok-gitsigns
|
|
|
|
(keymap.set :n :<leader>vl #(gitsigns.blame_line {:full true})
|
|
|
|
{:desc "Blame Line"}))
|
2024-01-02 22:35:15 +00:00
|
|
|
(keymap.set :n :<leader>vd :<cmd>DiffviewOpen<CR> {:desc "Open DiffView"})
|
2024-04-22 21:14:48 +00:00
|
|
|
(keymap.set :n :<leader>vvr #(repo.open-repo) {:desc "Open repository"})
|
|
|
|
(keymap.set :n :<leader>vvm #(repo.open-merge-request) {:desc "Open MR"})
|
|
|
|
(keymap.set :n :<leader>vvc #(repo.open-ci) {:desc "Open CI"})
|
2024-04-23 14:01:25 +00:00
|
|
|
(keymap.set :n :<leader>vtc #(repo.run-ci) {:desc "Trigger CI"})
|
2024-12-27 00:47:43 +00:00
|
|
|
(when ok-fzf
|
|
|
|
(keymap.set :n :<leader>lk fzf.keymaps {:desc "Show Keymappings"})
|
|
|
|
(keymap.set :n :<leader>ld #(fzf.diagnostics_document fzf-layout-bottom)
|
|
|
|
{:desc "Show Diagnostics"})
|
|
|
|
(keymap.set :n :<leader>lt :<cmd>TodoFzfLua<CR>
|
|
|
|
{:desc "Show Todo Comments"}))
|
2022-04-23 18:51:50 +00:00
|
|
|
(keymap.set :n :<leader>dli :<cmd>LspInfo<CR> {:desc "LSP Info"})
|
|
|
|
(keymap.set :n :<leader>dlr :<cmd>LspRestart<CR> {:desc "Restart LSP"})
|
2023-01-11 22:48:51 +00:00
|
|
|
(keymap.set :n :<leader>ds #(vim.diagnostic.open_float {:scope :line})
|
2024-06-19 08:10:24 +00:00
|
|
|
{:desc "Show Line Diagnostics"})
|
2022-11-11 14:06:11 +00:00
|
|
|
(keymap.set :n :<leader>dtp :<cmd>TSPlaygroundToggle<CR>
|
2022-04-23 18:51:50 +00:00
|
|
|
{:desc "Toggle Treetsitter Playground"})
|
2022-04-05 19:57:44 +00:00
|
|
|
;; Other Mappings
|
2024-12-27 00:47:43 +00:00
|
|
|
(when ok-npairs
|
|
|
|
(keymap.set :i :<CR> npairs.autopairs_cr
|
|
|
|
{:expr true :replace_keycodes false :silent true}))
|
2023-10-18 21:18:10 +00:00
|
|
|
(keymap.set :n :F #(formatting.maybe-format-buffer 0)
|
|
|
|
{:desc "Format Buffer"})
|
2022-04-23 18:51:50 +00:00
|
|
|
(keymap.set :n :<A-Left> :b)
|
|
|
|
(keymap.set :n :<A-Right> :w)
|
|
|
|
(keymap.set :n :<S-Left> "^")
|
|
|
|
(keymap.set :n :<S-Right> "$")
|
|
|
|
(keymap.set :i :<A-Left> :<C-o>b)
|
|
|
|
(keymap.set :i :<A-Right> :<C-o>w)
|
|
|
|
(keymap.set :i :<S-Left> :<C-o>^)
|
|
|
|
(keymap.set :i :<S-Right> :<C-o>$)
|
2023-11-29 14:52:16 +00:00
|
|
|
(keymap.set :n :<A-Up> "<cmd>MoveLine -1<CR>" {:noremap true :silent true})
|
|
|
|
(keymap.set :n :<A-Down> "<cmd>MoveLine 1<CR>" {:noremap true :silent true})
|
|
|
|
(keymap.set :x :<A-Up> "<cmd>MoveBlock -1<CR>" {:noremap true :silent true})
|
|
|
|
(keymap.set :x :<A-Down> "<cmd>MoveBlock 1<CR>"
|
|
|
|
{:noremap true :silent true})
|
2022-04-09 23:07:36 +00:00
|
|
|
(keymap.set :n :p "<Plug>(YankyPutAfter)")
|
|
|
|
(keymap.set :n :P "<Plug>(YankyPutBefore)")
|
2024-12-27 00:47:43 +00:00
|
|
|
(when ok-substitute
|
|
|
|
(keymap.set :x :p substitute.visual))
|
2022-04-09 23:07:36 +00:00
|
|
|
(keymap.set :x :P "<Plug>(YankyPutBefore)")
|
|
|
|
(keymap.set :n :gp "<Plug>(YankyGPutAfter)")
|
|
|
|
(keymap.set :n :gP "<Plug>(YankyGPutBefore)")
|
|
|
|
(keymap.set :x :gp "<Plug>(YankyGPutAfter)")
|
|
|
|
(keymap.set :x :gP "<Plug>(YankyGPutBefore)")
|
|
|
|
(keymap.set :n :y "<Plug>(YankyYank)")
|
2023-11-20 20:59:54 +00:00
|
|
|
(keymap.set :x :y "<Plug>(YankyYank)")
|
2023-11-29 14:52:16 +00:00
|
|
|
(keymap.set :n "-" :<cmd>Oil<CR> {:desc "Open Oil"})
|
2024-07-09 22:45:24 +00:00
|
|
|
;; hover.nvim
|
2024-12-27 00:47:43 +00:00
|
|
|
(when ok-hover
|
|
|
|
(keymap.set :n :K hover.hover {:desc "Show Documentation"})
|
|
|
|
(keymap.set :n :gK hover.hover_select {:desc "hover.nvim selection"})
|
|
|
|
(keymap.set :n :<C-p> #(hover.hover_switch :previous)
|
|
|
|
{:desc "hover.nvim previous source"})
|
|
|
|
(keymap.set :n :<C-n> #(hover.hover_switch :next)
|
|
|
|
{:desc "hover.nvim next source"}))
|
2023-11-29 14:52:16 +00:00
|
|
|
;; Label
|
2024-12-27 00:47:43 +00:00
|
|
|
(when ok-wk
|
|
|
|
(wk.add [{1 :<leader>v :group :vcs}
|
|
|
|
{1 :<leader>l :group :list/lsp}
|
|
|
|
{1 :<leader>d :group :debug}])))
|
2022-04-05 19:57:44 +00:00
|
|
|
|
2023-10-25 13:58:46 +00:00
|
|
|
(fn mod.lsp-attach [_client bufnr]
|
2024-12-27 00:47:43 +00:00
|
|
|
(when ok-fzf
|
|
|
|
(keymap.set :n :<leader>t #(fzf.lsp_document_symbols fzf-layout-dropdown)
|
|
|
|
{:buffer bufnr :desc "LSP Document Symbols"})
|
|
|
|
(keymap.set :n :<leader>tw
|
|
|
|
#(fzf.lsp_workspace_symbols fzf-layout-dropdown)
|
|
|
|
{:buffer bufnr :desc "LSP Workspace Symbols"}))
|
2023-11-14 20:47:20 +00:00
|
|
|
(keymap.set :n :<leader>th
|
2024-04-20 17:13:41 +00:00
|
|
|
#(vim.lsp.inlay_hint.enable (not (vim.lsp.inlay_hint.is_enabled bufnr))
|
|
|
|
{: bufnr})
|
2023-06-26 11:07:19 +00:00
|
|
|
{:buffer bufnr :desc "Toggle Inlay Hints"})
|
2024-12-27 00:47:43 +00:00
|
|
|
(when ok-fzf
|
|
|
|
(keymap.set :n :<leader>lca fzf.lsp_code_actions
|
|
|
|
{:buffer bufnr :desc "LSP Code Action"})
|
|
|
|
(keymap.set :n :<leader>lfr fzf.lsp_references
|
|
|
|
{:buffer bufnr :desc "Find References"})
|
|
|
|
(keymap.set :n :<leader>lfd fzf.lsp_definitions
|
|
|
|
{:buffer bufnr :desc "Find Definitions"})
|
|
|
|
(keymap.set :n :<leader>lfi fzf.lsp_implementations
|
|
|
|
{:buffer bufnr :desc "Find Implementations"})))
|
2022-04-05 19:57:44 +00:00
|
|
|
|
2022-04-20 14:27:26 +00:00
|
|
|
(fn mod.terminal-open [bufnr]
|
2022-04-23 18:51:50 +00:00
|
|
|
(let [map-opts {:buffer bufnr}]
|
2022-04-20 14:27:26 +00:00
|
|
|
(keymap.set :t :<esc> "<C-\\><C-n>" map-opts)
|
|
|
|
(keymap.set :t :<C-h> "<C-\\><C-n><C-W>h" map-opts)
|
|
|
|
(keymap.set :t :<C-j> "<C-\\><C-n><C-W>j" map-opts)
|
|
|
|
(keymap.set :t :<C-k> "<C-\\><C-n><C-W>k" map-opts)
|
|
|
|
(keymap.set :t :<C-l> "<C-\\><C-n><C-W>l" map-opts)))
|
|
|
|
|
2022-04-05 19:57:44 +00:00
|
|
|
mod)
|